【问题标题】:Jmeter - POST API not workingJmeter - POST API 不工作
【发布时间】:2018-01-17 04:11:50
【问题描述】:

我是 Jmeter 的新手,一直在努力让它工作以测试我的 POST API。它适用于我通过“参数”选项卡传递参数的 GET API 调用。

这里有详细信息:

服务器名称:本地主机 端口:8080 路径 /registerMobileUsingCode

在请求正文中,我发送以下内容:

{ "clientName": "DemoOrg", “代码”:“9880007615”, “语言 ID”:“1” }

我的 Jmeter 设置如下所示:

我的 HTTP 请求标头如下所示:

API 正在生产中,可以与邮递员一起正常工作。

我只是无法通过 JMeter 让它工作。很明显,我做错了什么,但尽管花了相当多的时间在谷歌上搜索解决方案,但我无法弄清楚是什么。

任何帮助将不胜感激。

更新 - 1 - 按照建议使用 jmeter 日志更新

线程名称:线程组 1-1 示例开始:2017-08-09 17:03:41 IST 加载时间:1604 连接时间:1525 延迟:1604 字节大小:399 发送字节数:251 标头大小(字节):213 正文大小(字节):186 样本数:1 错误数:1 数据类型(“text”|“bin”|“”):text 响应代码:500 响应消息:服务器级异常 遇到

响应标头:遇到 HTTP/1.1 500 服务器级异常 日期:2017 年 8 月 9 日星期三 11:33:43 GMT 访问控制允许来源:* 内容类型:application/json 传输编码:分块服务器: 码头(9.2.16.v20160414)

HTTPSampleResult 字段: ContentType: application/json DataEncoding: 空

UPDATE-2 - 使用 Postman 和 JMeter 记录器

按照@Dimitri T 的建议,我下载了 Linux 版本的 Postman 并使用 --proxy-server=localhost:8888 启动它。

我现在能够发出 Postman 请求并在 JMeter 中捕获请求。以下是请求的样子:

Jmeter capture of a Postman Request

如您所见,与我所做的完全不同。但是,这确实有效!这么快!

【问题讨论】:

  • 另外,请使用 Jmeter 日志更新您的问题
  • 您是否有适合您要求的卷曲,如果有,请与我们分享
  • 添加查看结果树(右击你的线程组>添加>监听器>查看结果树,然后尝试发送你的请求,你会在结果树下找到请求,有request/response ...
  • 已按照 Adnan 和 @QuakeCore 的建议更新了日志,我看到一个 500 错误,这是我的服务器无论如何都会返回的。
  • 500 响应表示服务器端出现一般故障,如果我是你,我会检查服务器日志

标签: api jmeter http-post jmeter-3.2


【解决方案1】:

通过查看您附加的图像,您在路径中缺少 /

路径应该是/registerMobileUsingCode

  1. 如果 POSTMAN 可以正常工作,那么您的 8080 端口就可以了。
  2. 您能否确认您的请求的数据类型是什么?看起来 languageId 是整数,所以您应该使用 languageId: 1,而不是 languageId:"1"。整数不应是双引号。

【讨论】:

    【解决方案2】:

    如果您的应用程序与 Postman 一起工作正常,那么构建 JMeter 测试计划的最快和最简单的方法就是使用 JMeter 的HTTP(S) Test Script Recorder 记录它。

    1. 准备 JMeter 进行记录(您可以通过 JMeter Templates Feature 点几下鼠标)

      • 从JMeter的主菜单中选择File -> Templates -> Recording并点击“创建”
      • 展开Workbench - HTTP(S) Test Script Recorder并点击“开始”
    2. 准备 Postman 进行录音

      • 为了“告诉” Postman 使用 JMeter 作为代理,您需要为其提供 --proxy-server 参数,例如:

        C:\Users\YOUR_USER_NAME\AppData\Local\Postman\app-x.x.x\Postman.exe --proxy-server=localhost:8888
        
    3. 在 Postman 中执行您的请求

    4. JMeter 将捕获请求,将它们转换为HTTP Request 采样器并将它们存储在Test Plan -> Thread Group -> Recording Controller

    参考资料:

    【讨论】:

    • 谢谢。我在 Ubuntu 上,正在努力让 JMeter 记录 postmal ping。我已经启动了记录器并完成了系统范围的代理设置。但我看不到 Postman 请求被捕获。
    猜你喜欢
    • 1970-01-01
    • 2014-03-08
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 2012-03-03
    • 2015-11-21
    • 2014-05-07
    相关资源
    最近更新 更多