2011-09-20 37 views
8

Pracuję z JMeter, aby napisać testy wydajności. Jedną z rzeczy, które muszę zrobić, jest dynamiczne skonstruowanie ogromnego żądania json i wysłanie go jako paylod żądania POST. Używając preprocesora BSF, jestem w stanie dynamicznie modyfikować ładunek, ale mój kod javascript jest kodowany, a ja chcę go wysłać bez kodowania.Wysyłanie żądania JSON POST za pomocą preprocesora BSF

Nie jestem pewien, w jaki sposób preprocesor BSF może uniemożliwić jego kodowanie. Komenda Używam obecnie zmienić moją ofertę kupna ładowność jest następujący:

var jsonData = '[{"item":"value","something":"everything"}]'; 
sampler.addArgument("",jsonData); 

będę naprawdę wdzięczny, jeśli można wskazać mi kilka przykładów, które jasno wyjaśniają, jak oczekuje się BSF Preprocesory być używany.

Dozwolone są również wszelkie wskaźniki, które pomijają kodowanie.

Odpowiedz

1

Od JMeter 2.6 można użyć RAW okienko żądania używając postu ciała kartę.

Więc rozwiązaniem jest wykonanie następujących czynności:

  1. W BSF Sampler, można umieścić JSON w zmiennej:

    var jsonData = '[{"item":"value","something":"everything"}]'; 
    vars.putObject("jsonData",jsonData); 
    
  2. W korpusie słupkowym, umieścić:

    ${jsonData} 
    

Inna opcja za pomocą jo Metoda ur jest umieszczenie w BSFPreProcessor użyciu języka BeanShell (nie javascript):

import org.apache.jmeter.protocol.http.util.HTTPArgument; 
String jsonData = "[{\"item\":\"value\",\"something\":\"everything\"}]"; 
HTTPArgument arg =new HTTPArgument("", jsonData, null, true); 
arg.setAlwaysEncoded(false); 
sampler.getArguments().addArgument(arg); 

Pozdrowienia

Philippe M.

-1

zestaw nieruchomość na próbniku „HTTPArgument.always_encode” na false to powinno wyłączyć kodowanie argumentów

+1

Rozwiązanie jest niekompletna, patrz poniżej dla jednego pełnego –

Powiązane problemy