【Loadrunner】解决post json问题



问题:发送json的post请求时,虽然请求脚本中有用到RecContentType=application/json;charset=UTF-8,但是回放时,日志中提示: Error -26616: HTTP Status-Code=415 (Unsupported Media Type) for+请求地址,通过查看请求的包头和发送值,以及抓包工具对比,发现RecContentType参数中定义了响应内容为json,但其实默认发送的居然为:Content-Type: application/x-www-form-urlencoded,于是只能无奈的手工添加包头参数,具体操作如下:
解决方法:
 
方法1:如果用web_custom_request发送请求,自带EncType参数,可以直接添加该参数值application/json;charset=UTF-8,即可解决此问题

web_custom_request("placeOrder",
  "URL=http://{IP}/appServer/interface/order/placeOrder",
  "Method=POST",
  "RecContentType=application/json;charset=UTF-8",
  "Snapshot=t1.inf",
  "Mode=HTTP",
  "EncType=application/json;charset=UTF-8",
  "Body={\"userId\":{userId},\"shopId\":{shopId},\"orderSceneType\":1,\"orderType\":1,\"goods\":[{\"shopId\":{shopId},\"goodsId\":{goodsId}}]}",
  LAST);

方法2:如果用提交表单(web_submit_data)的方式发送请求,不自带EncType参数,必须手动添加包头,可解决此问题,但会保警告,大概意思是“添加包头后,后续请求将用到”,此警告暂时未影响请求最终效果,可忽略。

 web_add_header("Content-Type","application/json; charset=utf-8");

web_submit_data("placeOrder",
        "Action=http://{IP}/appServer/interface/order/placeOrder",
        "Method=POST",
        "RecContentType=application/json;charset=UTF-8",
        "Snapshot=t1.inf",
        "Mode=HTML",
        ITEMDATA,
        "Name=data", "Value={userId}", ENDITEM,
        "Name=shopId", "Value={shopId}", ENDITEM,
        "Name=orderSceneType", "Value=1", ENDITEM,
        "Name=orderType", "Value=1", ENDITEM,
        "Name=goods", "Value=[{\"shopId\":{shopId},\"goodsId\":{goodsId}}]", ENDITEM,          
        LAST );

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值