2012-06-28 8 views
7

Ich entwickelte einen Rest-Server, und ich legte es in localhost laufen, und ich versuche, Tests mit JMeter, Senden von Anfragen Posts und ruft (abhängig von aufgerufenen Methode).Wie man application/x-www-form-urlencoded Parameter an einen RestServer mit JMeter sendet?

Ich habe bereits zu Rest-Server gesendet und bekam Ergebnis mit JMeter in einfachen Post-Anfragen, Anfragen erhalten, Dateien mit Post senden und senden ein Json mit Post.

Aber ich weiß nicht, wie man ein Form-UrlEncoded-Objekt zum Server sendet. Mein Rest-Server verbraucht "application/x-www-form-urlencoded", und ich muss drei String-Parameter senden.

Gibt es eine Möglichkeit, den MimeType für jeden Parameter festzulegen und den Test durchzuführen?

Ich verwende Jmeter 2,7

  • aktualisieren -

Ich löste dies durch "Verwendung multipart/form-data für Post und das Aktivieren "deaktivieren Umleitung automatisch" statt" folgen redirect ". Die Parameter, die ich normalerweise in die Tabelle" Parameter mit der Anfrage senden "mit den jeweiligen Namen eingetragen habe.

Antwort

2

Haben Sie versucht, Ihren Test mit BadBoy oder 012 zu speichernum zu sehen, was Ihre Anwendung tatsächlich sendet?

Um zu sehen, was unter der Haube passiert, können Sie auch FireBug verwenden, wenn Sie FireFox oder Ctrl+Shift+i verwenden, wenn Sie in Chrome sind.

8

Zum Senden von Formularparametern als application/x-www-form-urlencoded fügen Sie einen Header-Parameter Content-Type mit dem Wert application/x-www-form-urlencoded hinzu.

Die folgenden Schritte ist aplicable für Jmeter 2.3.4

  1. hinzufügen HTTP Header-Manager unter dem HTTP-Request.
  2. Fügen Sie dem HTTP-Header-Manager einen neuen Parameter mit dem Namen Content-Type und dem Wert application/x-www-form-urlencoded hinzu.
  3. Deaktivieren Sie "Multipart/Formulardaten für HTTP POST verwenden" der HTTP-Anfrage.
  4. Deaktivieren Sie "Encode?" von jedem Anforderungsparameter (nicht notwendig).
  5. gehalten "Content Encode:" Textfeld der HTTP-Anfrage als leer.

    Dies funktioniert nicht für PUT-Anfrage. Für Put-Anfrage Parameter als Pfadparameter hinzufügen und Content-Type-Header setzen, dann wird Jmeter von selbst tun.

-1

gefolgt genauen Schritte erwähnt ich immer noch eine Ausnahme

Antwortcode geworfen sehen: Non HTTP-Response-Code: java.nio.charset.IllegalCharsetNameException Response-Nachricht: Nicht HTTP-Antwortnachricht: application/x-www-form-urlencoded

java.nio.charset.IllegalCharsetNameException: application/x-www-form-urlencoded 
    at java.nio.charset.Charset.checkName(Charset.java:315) 
    at java.nio.charset.Charset.lookup2(Charset.java:484) 
    at java.nio.charset.Charset.lookup(Charset.java:464) 
    at java.nio.charset.Charset.forName(Charset.java:528) 
    at org.apache.http.entity.ContentType.create(ContentType.java:210) 
    at org.apache.http.entity.StringEntity.<init>(StringEntity.java:116) 
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sendPostData(HTTPHC4Impl.java:1340) 
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.handleMethod(HTTPHC4Impl.java:592) 
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:409) 
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74) 
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1166) 
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1155) 
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:475) 
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:418) 
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:249) 
    at java.lang.Thread.run(Thread.java:745) 
+0

Es funktioniert, nachdem ich von JMeter 3.1 auf 3.2 aktualisiert habe –

+0

Dies ist keine Antwort auf die Frage zur Hand. Entweder nehmen Sie dies, um zu chatten oder eine neue Frage zu diesem Thema zu posten. – jdv

+0

Es ist eine Antwort ist es nicht –

2

Hier ist die Lösung für HTTP POST mit x-www-form-urlencoded Tests mit jmeter. Du folgst einfach wie diese. enter image description here

enter image description here

enter image description here

Go-Gruppe Thema -> Hörer hinzufügen -> Ansichten Ergebnis in der Tabelle, Ansicht Ergebnis Baum. Um den Prozess der Reaktion zu sehen.

0

IllegalCharsetNameException wird sofort ausgeführt, nachdem Sie den erforderlichen Inhaltstyp im HTTP-Header-Manager für die HTTP-Anforderung hinzugefügt haben.

Hoffe, das hilft.