web-dev-qa-db-fra.com

Jmeter n'envoie pas de données JSON dans POST

J'essaie de faire un POST en jmètre avec un json comme données de corps mais j'obtiens juste un 400. L'url que j'envoie aussi n'accepte que json. J'ai utilisé la même boucle dans Postman et cela a très bien fonctionné. J'ai essayé de mettre le json dans les paramètres comme une valeur sans nom et cela n'a pas fonctionné.

! [1]: http://i.stack.imgur.com/1sAdO.png

J'essaie juste d'envoyer {"uid": "jmtest", "name": "newdevice"}.

désolé je ne peux pas poster plus de liens donc

Le résultat de l'échantillonneur est

Thread Name: QA test 1-1 Sample Start: 2016-05-11 11:50:19 MDT Load time: 86 Connect Time: 51 Latency: 86 Size in bytes: 282 Headers size in bytes: 244 Body size in bytes: 38 Sample Count: 1 Error Count: 1 Data type ("text"|"bin"|""): text Response code: 400 Response message: Bad Request Response headers: HTTP/1.1 400 Bad Request Server: nginx Date: Wed, 11 May 2016 17:50:19 GMT Content-Type: application/json; charset=utf-8 Content-Length: 38 Connection: keep-alive X-Request-Id: 88339ee9-b74f-4e22-b581-e3124949d067 X-Runtime: 0.030877 HTTPSampleResult fields: ContentType: application/json; charset=utf-8 DataEncoding: utf-8

la demande ressemble

``/url expurgé POST data: {"devices": {"uid": "jmtest", "name": "newdevice"} [no cookies] En-têtes de requête: Connexion: keep- en vie Accepter: application/vnd.moneydesktop.v2 + json Content_Type: application/json MD-SESSION-TOKEN: expurgé Type de contenu: application/x-www-form-urlencoded Contenu-Longueur: 46 Hôte: expurgé Agent utilisateur: Apache -HttpClient/4.5.2 (Java/1.8.0_72) `` '

et les données de réponse sont { : "status":"400", : "error":"Bad Request" }

10
Justin Thompson
  1. Assurez-vous que votre HTTP Header Manager est configuré pour envoyer Content-Type en-tête avec la valeur de application/json
  2. Étant donné que vous avez des échantillonneurs comme "page d'accueil" et "connexion", il se peut que vous manquiez HTTP Cookie Manager
  3. La façon la plus simple de voir ce qui ne va pas est de capturer les demandes envoyées par Postman (quel qu'il soit) et JMeter par un outil de renifleur comme Wireshark , d'identifier les différences et de configurer JMeter en conséquence.
  4. Enfin, il semble que vous utilisiez un instantané de développeur, donc l'approche pour passer la charge utile JSON comme 1er argument sans nom peut ne pas fonctionner. Essayez plutôt de passer à "Body Data".
  5. Si les étapes ci-dessus ne vous aideront pas à mettre à jour votre question avec des captures d'écran de View Tree Tree listener (all 3 tabs) and Postman

Consultez Test des services Web SOAP/REST à l'aide de JMeter pour plus de conseils.

13
Dmitri T

Pour envoyer une POST requête HTTP avec les données JSON à l'intérieur du corps, vous devez ajouter,

  • HTTP Header Manager dans votre requête et définissez le nom comme 'content-type' et la valeur comme 'application/json' ceci sera attaché dans l'en-tête de requête HTTP et ce que les données à l'intérieur de votre corps de requête enverront au format json.

Image 1: définir le gestionnaire d'en-tête HTTP, enter image description here

Image 2: Définir les données du corps de la requête HTTP enter image description here

11
Hasiya

J'ai rencontré le même problème et il a été résolu en définissant la valeur de Content Encoding sur utf-8 dans la demande http. S'il vous plaît essayez.

4
Shoyeb

entrez la description de l'image ici La solution suivante de Dmitri T, a vraiment fonctionné pour moi.

Assurez-vous que votre gestionnaire d'en-tête HTTP est configuré pour envoyer un en-tête "Content-Type" avec la valeur "application/json"

3
Sanjib Nath

J'ai compris mon problème. J'avais défini Content_type au lieu de Content-Type, donc cela créait deux en-têtes de type de contenu.

1
Justin Thompson

La définition du gestionnaire d'en-tête HTTP a résolu le problème pour moi

0
Anilal

Vous devez utiliser les données du corps, pas les paramètres. couper et coller l'onglet suivant sur votre demande. Vous devez également modifier l'implémentation en Java et vérifier si votre jeton est valide. Enfin, vérifiez vos résultats à partir de l'élément de rapport de l'arborescence des résultats. Il doit fonctionner pour vous.

0
Ozgur Kaya

Selon votre photo ci-jointe, vous avez collé la demande en paramètres de queryp, la charge utile doit être dans la partie du corps

vérifiez la capture d'écran dont vous disposez dans la section queryParam

0
Suman g