2016-09-19 2 views
1

Hinweis - Ich habe BlazeMeter Tutorial überprüft, die Docs als Body-Daten lädt, während ich Datei-Upload-Registerkarte verwenden.Hochladen von Datei in Rest-API mit JMeter

Hier ist, wie meine Anfrage aussieht -

enter image description here

Bei der Ausführung I folgende Anfrage erhalten -

POST https://xxx 

POST data: 
<actual file content, not shown here> 

[no cookies] 

Request Headers: 
Connection: keep-alive 
Content-Type: multipart/form-data 
Accept-Language: en-US 
Authorization: bearer <> 
Accept: application/json 
Content-Length: 78920 
Host: test-host 
User-Agent: Apache-HttpClient/4.5.2 (Java/1.8.0_102) 

Und die Anforderung fehlschlägt mit 400 Fehler -

Response code: 400 
Response message: Bad Request 

Seit Ich bin in der Lage, Datei-Upload mit Curl durchzuführen, ich nehme an, dass ich vermisse d einige Konfiguration mit JMeter. Curl sieht so aus -

curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: Bearer <>' -F [email protected]"test.pdf" 'https://xxx' 

Was habe ich in JMeter Datei-Upload vermisst?

+0

Ich habe auch versucht mit MIME Type '' 'multipart/form-data''', aber ohne Erfolg – Tarun

Antwort

1

Wenn Sie erfolgreich Datei über curl hochladen können, warum Sie nicht nur aufzeichnen den Upload durch JMeter HTTP(S) Test Script Recorder wie:

curl -x http://localhost:8888 -X POST --header 'Content-Type....." 

Wenn Sie immer noch die Anforderung manuell zwei wichtige Bits betrachten aufbauen müssen:

  1. Sie müssen Use multipart/form-data for POST überprüfen.

  2. Das wichtigste, was Sie brauchen „Parameternamen“ zu liefern, nach HTTP Request Sampler Manual: von

    Für die POST und PUT-Methode, wenn es keine Datei zu senden, und der Namen (n) die Parameter werden weggelassen, dann wird der Körper durch Verketten aller Werte der Parameter erzeugt.

    Blick in curl command manual in Ihrem Fall des "Parametername" sollte upload_file

So ist die endgültige Konfiguration sein sollte wie folgt aussehen:

File Upload Configuration

Performance Testing: Upload and Download Scenarios with Apache JMeter guide obige Schritte anzeigen im Detail beschrieben.

+0

HTTPS Test Recorder ist Browser-Anfragen aufzuzeichnen und nicht von Curl zu JMeter-Format zu konvertieren, nicht wahr? Ich habe das Kontrollkästchen multipart/form-data aktiviert, parameter_name als upload_file hinzugefügt und trotzdem 400 Error bekommen. So sieht ein Request aus - https://justpaste.it/edit/12989825/54ff7f90 – Tarun

+0

Der HTTP (S) -Test-Rekorder zeichnet alle HTTP- oder HTTPS-Anfragen auf, unabhängig vom Ursprung. FYI: alle Browser senden HTTP-Anfragen und Rendering-Antworten –

+0

Ich habe http4 Implementation verwendet, die mit 400 Fehler fehlgeschlagen ist, wechselte es zu Java-Client funktioniert perfekt. Danke auch für den Recorder. – Tarun

0

danke für die JAVA-Implementierung von HTTP! Datei-Uploads funktionieren wieder für mich, die seit 2.13 nicht funktioniert haben

hier ist mein Beitrag sonst wo: Ich hatte das gleiche Problem ... dachte Jmeter tat etwas falsch, da dieses Zeug für mich in 2.13 arbeitete ... hasn 't hat seit Version 3 gearbeitet. Nun..sah irgendwo ein Post, der gesagt hat, dass die JAVA-Implementierung von HTTP funktioniert. Erraten Sie, was? es hat auch für mich funktioniert !!! Ich habe mich bemüht, jeden Teil des POST zu analysieren. Ich habe es die ganze Zeit richtig gemacht, brauchte nur JAVA-Implementierung von HTTP und voila!

hoffe das hilft!