但是如果经过多次尝试都对比不出来,或者请求比较复杂,这时候就需要借助工具来帮助了。
这里推荐一个工具Jmeter。
其最大的好处就是集成了JAVA的httpclient来模拟HTTP请求,而ExMobi页面抓取的核心类也是httpclient,在JMeter中来模拟HTTP请求的抓包更贴近于ExMobi,并更容易在模拟成功后无缝还原到ExMobi中。
下载完成后直接解压到任意目录,然后运行根目录/bin/jmeter.bat文件即可打开jmeter的工作界面。
下面就介绍如何使用:
1、准备测试数据。
首先先用抓包工具把浏览器上的正确请求抓包保存起来。
2、打开并设置Jmeter
a. 点击"测试计划",右键"添加"-"Thread(Users)"-"线程组",线程数先设置1b.在"线程组",右键"添加"-"Sample"-"HTTP请求"
c.修改HTTP请求页面的参数
根据第一步准备的测试数据设置到HTTP请求面板中,注意各个参数要对应上
d.设置头信息
除了请求的基本参数,有可能还需要添加头信息。在左侧选中请求,点击右键选择“HTTP信息头管理器”和“HTTP Cookie管理器”
即可添加请求的一些必要头信息
e.其他信息jmeter中还可以有更多丰富的设置,具体可以参阅http://www.ltesting.net/ceshi/open/kyxncsgj/jmeter/
3、开始进行测试
开始测试时请先把抓包工具打开,需要模拟的请求请置为启用状态,设置启用状态的方式如下:
设置好之后点击快捷菜单的执行按钮即可发起当前请求,这时候在抓包工具中应该就可以进行请求,并且在抓包工具中看到抓包
4、将第1步和第3步的抓包进行对比之后,如果判定请求错误,那么继续重复2-4的步骤即可
下面是本次示例保存的计划任务,可以直接在jmeter中导入修改
导入方法为解压zip包中的jmx文件,在jmeter界面的菜单“文件”中选择“打开”,选中此jmx文件即可打开和编辑
解决:parameters跟body data的方式两者只可选择其一,当一种方式下有数据时就无法使用另外一种,必须清空。
报错 : {"status":500,"message":"Content type 'text/plaincharset=UTF-8' not supported"} 等类似情况,如下图
解决 :网上找了很多解决方法都不管用,其实解决起来很简单,添加请求信息头(content-type,application/json),如下图
PS: content-type根据需要的情况选择,不区分大小写;
报错 :{"status":500,"message":"JSON parse error: Unrecognized token 'username': was expecting ('true', 'false' or 'null')nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'username': was expecting ('true', 'false' or 'null')\n at [Source: (PushbackInputStream)line: 1, column: 10]"}
解决 :
1)原因解析:参数,用于get 或put请求;消息体用于post 请求;
2)解决:把post请求的消息体参数放在 消息体里,见上一个常见问题的截图;
若有其他问题,参考 http://www.cnblogs.com/hiln/p/9463134.html
解析
检查接口、参数是否正确
jmeter与postman接口地址、参数完全一样
检查jmeter是否添加了请求头
已添加请求头Content-Type=application/json
切换get方法请求
请求失败,后台不支持
切换为post,paraments填写参数
请求失败,后台不支持
经常一系列尝试,无论怎么修改请求方式,修改参数填写方式,均不行。这时候想到请求参数里面有中文,于是在Content encoding里填写UTF-8,再次请求,ok
总结
猜测postman在识别到有中文时会自动转码
以后在用jmeter请求时,如果入参有中文,最好设置Content encoding为UTF-8
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)