如何解决JMeter 中的 POST 给出“无法识别的令牌‘json’”
我不知道为什么会出现此错误:
"Failed to parse request body as JSON resource. Error was: Failed to parse JSON encoded FHIR content: Unrecognized token 'json': was expecting ('true','false' or 'null')\n at [Source: UNKNOWN; line: 3,column: 29]"
FHIR 是使用的标准。我还使用与 Postman 一起使用的有效 JSON 进行了测试,因此我认为实际的 JSON 不是问题所在。 我不确定我是否正确,但似乎 JMeter 从某处添加了 'json',因为错误指出令牌 'json' 是意外的。这是查看结果树中的请求 > 请求正文选项卡。
这只是一个测试 JSON,但我得到了与 Postman 中工作的 JSON 主体相同的响应(并且我已正确格式化以确保)。我指定了 Content-Type 标头。我只是不明白令牌“json”的来源,因为我的 json 本身不包含令牌。有人知道 JMeter 是否在请求中添加了一些内容?
解决方法
您发送的有效负载不正确,它应该如下所示:
{
"test" : "X"
}
你正在发送
{
"test" : "X"
}json
^^^^ this guy is causing the issue
JMeter 没有添加任何请求,您需要仔细检查您的配置,即 JMeter jmx scripts 是“普通”XML 文件,因此您可以使用您喜欢的文本编辑器来查找此 json
如果您能够使用 Postman 发送有效请求,您应该能够使用 JMeter 的 HTTP(S) Test Script Recorder 记录它,只需将 Postman 配置为使用 JMeter 作为代理并运行您的请求/收集 - JMeter 将捕获请求并生成可以成功重放的相关 HTTP Request 采样器。
更多信息:How to Convert Your Postman API Tests to JMeter for Scaling
,碰巧的是,如果您在 HTTP 请求默认值中添加默认参数(在我的情况下为 _format=json),它会将其添加到 POST 的正文中。
我通过添加一个带有代码的 BeanShell PreProcessor 解决了这个问题:
if(sampler.getMethod().equalsIgnoreCase("get")){ sampler.addArgument("_format","json"); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。