Jmeter不会在POST

时间:2016-05-11 17:08:56

标签: json post jmeter

我正在尝试使用json作为身体数据在jmeter中进行POST,但我只得到400回。我发送的网址也只接受json。我在Postman中使用了相同的卷曲,它工作得很好。我已经尝试将json作为一个没有名称的值放在参数中,并且没有用。

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

我只是想发送{“uid”:“jmtest”,“name”:“newdevice”}。

抱歉,我无法发布更多链接

采样器结果为

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

请求看起来像

``/ url编辑 发布数据: { “设备”:{ “UID”: “jmtest”, “名称”: “newdevice”} [没有饼干] 请求标题: 连接:保持活力 接受:application / vnd.moneydesktop.v2 + json Content_Type:application / json MD-SESSION-TOKEN:编辑 内容类型:application / x-www-form-urlencoded 内容长度:46 主持人:编辑 User-Agent:Apache-HttpClient / 4.5.2(Java / 1.8.0_72)```

并且响应数据是 { : "status":"400", : "error":"Bad Request" }

12 个答案:

答案 0 :(得分:11)

  1. 确保您的HTTP Header Manager配置为发送Content-Type标题,其值为application/json
  2. 鉴于你有像“主页”和“登录”这样的采样器,你可能会错过HTTP Cookie Manager
  3. 查看错误的最直接的方法是捕获Postman发送的请求(无论是什么)和JMeter通过嗅探器工具(如Wireshark)识别差异并相应地配置JMeter。
  4. 最后,看起来你正在使用一些开发人员快照,所以传递JSON有效负载的方法作为第一个参数没有名称可能不起作用。请尝试切换到“正文数据”。
  5. 如果以上步骤无法通过View Results Tree监听器(所有3个标签)和Postman
  6. 的屏幕截图更新您的问题

    查看Testing SOAP/REST Web Services Using JMeter了解更多提示。

答案 1 :(得分:6)

要在正文中发送带有JSON数据的POST HTTP请求,需要添加

  • HTTP标头管理您的请求,并将名称设置为' content-type'并且作为' application / json'这将附加到HTTP请求标头中,请求正文中的数据将以json格式发送。

图1:设置HTTP标头管理器, enter image description here

图2:设置HTTP请求正文数据 enter image description here

答案 2 :(得分:3)

您可能想做的第一件事是将有效负载放在“主体数据”中,而不是“参数”中

然后,添加一个配置元素“ HTTP Header Manager” 并添加一个带有相应值“ application / json”的参数“ content-type”

现在点击。应该做!

答案 3 :(得分:1)

我发现了我的问题。我设置了Content_type而不是Content-Type,因此它创建了两个内容类型标头。

答案 4 :(得分:1)

enter image description here Dmitri T的以下解决方案对我确实有用。

确保您的HTTP标头管理器配置为发送值为“ application / json”的“ Content-Type”标头

答案 5 :(得分:1)

尽管Hasiya解释得很好,但是却错过了如何找到http请求的方法。 如果您选择http默认值,将不会看到方法选项。

enter image description here

答案 6 :(得分:1)

我给了 HTTP/1.1 415 Unsupported Media Type

删除 HTTP Header Manager 之前的空间后,它得到了 200 并且效果很好enter image description here

答案 7 :(得分:0)

您必须使用身体数据,而不是参数。将其剪切并粘贴到您请求的下一个标签上。您还应该将实现更改为Java并检查您的令牌是否有效。最后从查看结果树报告项目中检查结果。它必须适合你。

答案 8 :(得分:0)

根据你附上的图片,你已经在queryparameters中粘贴了请求,有效负载必须在正文部分

在queryParam部分检查你有有效负载的屏幕截图

答案 9 :(得分:0)

我也遇到了同样的问题,在http请求的内容编码中,通过Tentering utf-8解决了该问题。请尝试。

答案 10 :(得分:0)

设置HTTP标头管理器为我解决了该问题

答案 11 :(得分:0)

除了上面说的很多之外,请确保从网站复制/粘贴 Accept, Content-Type 没有尾随空格!我花了好几个小时才弄明白。只是一个警告。

只需编辑添加,如果发生该错误,返回码为 415:不支持的媒体类型