WireShark进行抓包分析

上一篇 / 下一篇  2016-05-10 17:44:42 / 个人分类:jemter

工具选择篇,笔者使用了jmeter工具和LR对接口进行压测,并使用WireShark进行抓包分析。


一、Jmeter

jmeter不涉及到断言之类的操作,只聊http请求。

1、下图为http请求,BodyData中说明发送数据的格式为json


2、在查看结果树中,可以看到本次请求POST data:data={"sm_seq":"201411CM100000017"},Content-Type: application/x-www-form-urlencoded


3、通过WireShark对包结构进行分析,如下图红框所示

二、LR脚本制作

经过了一些曲直,总结了下和大家分享,脚本如下:

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. web_custom_request("web_custom_request",  
  2.        "URL=http://xxxxxxxxxxxxx/extra_cms_api/get_item_by_seq/RAN1411WUHAN/",  
  3.        "Method=POST",  
  4.        "Resource=0",  
  5.        "RecContentType=application/json",  
  6.        "Referer=",  
  7.        "Mode=HTTP",  
  8.        "EncType=application/x-www-form-urlencoded",                   
  9.        "Body=data={\"sm_seq\":\"{CM}\"}",  
  10.        //下面是错误的,通过抓包工具对比,就能定位问题  
  11.        //  情况1 EncType为json  
  12.        // "EncType=application/json",  
  13.        // 情况2 没有加data=  
  14.        // "Body={\"sm_seq\":\"{CM}\"}",                      
  15.        LAST);</span>  


情况1:EncType=application/json,原本以为这样写脚本就通过了,但事实并非如此,服务端返回“params error”,参数错误,通过抓包数据对比,可以看出差异在Line-based text data:application/json


情况2:

EncType=application/x-www-form-urlencoded,

Body={\"sm_seq\":\"{CM}\"},由下图可以看出 key的值和value的值不正确

最终修改为:

 "EncType=application/x-www-form-urlencoded", 

"Body=data={\"sm_seq\":\"{CM}\"}", OK问题解决,能够返程成功的结果。

若有疑问请拍砖。


TAG:

 

评分:0

我来说两句

Open Toolbar