51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

楼主: new_lio
打印 上一主题 下一主题

[讨论] LoadRunner发json请求,总是有这个错误,在线等高人回答

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2013-7-18 14:29:47 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 new_lio 于 2013-7-18 15:30 编辑

首先介绍下,我这边项目是安卓APK,然后我想用loadrunner模拟安卓apk向服务器发送json请求
然后我分别抓取了apk一个动作的请求包
电脑上面,sdk模拟器里面的apk(pc上面http抓包)
http://192.168.1.183:8080/AIO/VisitorService.json
{"id":-1046118514,"method":"signIn","params":["{\"data\":\"{\\\"phoneNo\\\":\\\"321\\\",\\\"visitorName\\\":\\\"??\\\",\\\"email\\\":\\\"mct@mct\\\",\\\"visitorId\\\":\\\"412326198503153952\\\"}\"}"]}
http://192.168.1.183:8080/AIO/ComplainService.json
{"id":976873371,"method":"saveComplain","params":["{\"data\":\"%7B%5C%22content%5C%22%3A%5C%22xx%5C%22%2C%5C%22title%5C%22%3A%5C%22xx%5C%22%2C%5C%22addresseeName%5C%22%3A%5C%22%E5%85%AC%E5%AE%89%E5%B1%80%5C%22%2C%5C%22addresserName%5C%22%3A%5C%22%E9%87%91%E6%B0%B8%5C%22%2C%5C%22sendTime%5C%22%3A%5C%222013-06-14+03%3A35%3A13%5C%22%2C%5C%22addressee%5C%22%3A%5C%22ff8080813e8b1861013e8b1c51bc0003%5C%22%2C%5C%22contentType%5C%22%3A%5C%221%5C%22%2C%5C%22addresser%5C%22%3A%5C%22ff8080813e866bd6013e8a9d52b90007%5C%22%7D\"}"]}
真正平板上面的apk启动真实操作后,服务器后台日志
signIn: {"data":"{\"phoneNo\":\"321\",\"visitorName\":\"??\",\"email\":\"mct@mct\",\"visitorId\":\"412326198503153952\"}"}
2013-07-17 23:18:12,669 DEBUG [cn.org.coral.biz.complain.service.jsonif.impl.ComplainJsonServiceImpl.saveComplain]>>>
saveComplain: {"data":"{\"content\":\"test\",\"title\":\"test\",\"addresseeName\":\"公安局\",\"addresserName\":\"金永\",\"sendTime\":\"2010-01-01 09:12:08\",\"addressee\":\"ff8080813e8b1861013e8b1c51bc0003\",\"contentType\":\"1\",\"addresser\":\"ff8080813e866bd6013e8a9d52b90007\"}"}

然后对这个json请求用lr来模拟,lr代码
Action()
{
        web_reg_save_param("json",
                "LB=",
                "RB=",
                LAST);
        web_custom_request("web_custom_request",
                "URL=http://192.168.1.183:8080/AIO/VisitorService.json",
                "Method=POST",
                "TargetFrame=",
                "Resource=0",
        "RecContentType=application/x-www-form-urlencoded charset=utf-8",
                      //application/x-www-form-urlencoded charset=utf-8
                "Referer=",       
                "Body=[\"{\"data\":\"{\\\"phoneNo\\\":\\\"321\\\",\\\"visitorName\\\":\\\"??\\\",\\\"email\\\":\\\"mct@mct\\\",\\\"visitorId\\\":\\\"412326198503153952\\\"}\"}\"]",
                LAST);
    web_custom_request("web_custom_request",
        "URL=http://192.168.1.183:8080/AIO/ComplainService.json",
        "Method=POST",
        "TargetFrame=",
        "Resource=0",
        "RecContentType=application/x-www-form-urlencoded charset=union",
                      //application/x-www-form-urlencoded charset=utf-8
        "Referer=",
        "Body=[\"{\"data\":\"%7B%5C%22content%5C%22%3A%5C%22xx%5C%22%2C%5C%22title%5C%22%3A%5C%22xx%5C%22%2C%5C%22addresseeName%5C%22%3A%5C%22%E5%85%AC%E5%AE%89%E5%B1%80%5C%22%2C%5C%22addresserName%5C%22%3A%5C%22%E9%87%91%E6%B0%B8%5C%22%2C%5C%22sendTime%5C%22%3A%5C%222013-06-14+03%3A35%3A13%5C%22%2C%5C%22addressee%5C%22%3A%5C%22ff8080813e8b1861013e8b1c51bc0003%5C%22%2C%5C%22contentType%5C%22%3A%5C%221%5C%22%2C%5C%22addresser%5C%22%3A%5C%22ff8080813e866bd6013e8a9d52b90007%5C%22%7D\"}\"]",
        LAST);
        lr_output_message("返回捕获:%s",lr_eval_string("{json}"));
        return 0;
}
问题:
1.通过这2个方式的抓包,我发现json请求代码不一样,这个没关系,2个json串我都试了,都是同样的错误
错误如下,截取部分错误,如附件图片所示
2013-07-17 23:26:19,551 ERROR [/AIO/VisitorService.json._jspService]>>> No content to map due to end-of-input
at [Source: com.googlecode.jsonrpc4j.NoCloseInputStream@2a402b0e; line: 1, column: 1]
com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
at [Source: com.googlecode.jsonrpc4j.NoCloseInputStream@2a402b0e; line: 1, column: 1]
        at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164) [jackson-databind-2.1.1.jar:2.1.1]
        at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:2839) [jackson-databind-2.1.1.jar:2.1.1]
        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2781) [jackson-databind-2.1.1.jar:2.1.1]
        at com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:1627) [jackson-databind-2.1.1.jar:2.1.1]
        at com.googlecode.jsonrpc4j.JsonRpcServer.handle(JsonRpcServer.java:220) [jsonrpc4j-0.26.jar:na]

如果加上这个后"EncType=utf-8",后台又会报这个utf-8的错误,如附件所示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2013-7-18 14:34:55 | 显示全部楼层
有什么好的方法,请大家说说
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2013-7-19 13:25:07 | 显示全部楼层
哦,我试下先
回复 支持 0 反对 1

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2013-7-19 16:39:43 | 显示全部楼层
回复 6# 云层


    这个没有录制啊,抓包,是pc上面安装的sdk模拟器,每次抓的都是一样的,就是在代码上面

然后我想用lr发出去,就是服务器不接受

另外服务器会自动打印json请求日志,那个日志和抓包的json串,有点小区别,这个也不知道如果用lr发送,到底用那个json串,反正目前这2个我都试过,错误都一样
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2013-7-19 16:46:34 | 显示全部楼层
回复 6# 云层


    lr发请求抓包,抓出来了,不过带中文的已经显示为乱码了,不知道这个有没影响

那个安卓sdk环境有点问题,暂时启动不起来,不过之前抓包是这样的,感觉中文的地方转码了
http://192.168.1.183:8080/AIO/VisitorService.json
{"id":-1046118514,"method":"signIn","params":["{\"data\":\"{\\\"phoneNo\\\":\\\"321\\\",\\\"visitorName\\\":\\\"??\\\",\\\"email\\\":\\\"mct@mct\\\",\\\"visitorId\\\":\\\"412326198503153952\\\"}\"}"]}
http://192.168.1.183:8080/AIO/ComplainService.json
{"id":976873371,"method":"saveComplain","params":["{\"data\":\"%7B%5C%22content%5C%22%3A%5C%22xx%5C%22%2C%5C%22title%5C%22%3A%5C%22xx%5C%22%2C%5C%22addresseeName%5C%22%3A%5C%22%E5%85%AC%E5%AE%89%E5%B1%80%5C%22%2C%5C%22addresserName%5C%22%3A%5C%22%E9%87%91%E6%B0%B8%5C%22%2C%5C%22sendTime%5C%22%3A%5C%222013-06-14+03%3A35%3A13%5C%22%2C%5C%22addressee%5C%22%3A%5C%22ff8080813e8b1861013e8b1c51bc0003%5C%22%2C%5C%22contentType%5C%22%3A%5C%221%5C%22%2C%5C%22addresser%5C%22%3A%5C%22ff8080813e866bd6013e8a9d52b90007%5C%22%7D\"}"]}

真正安卓平台上面的没法抓包

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2013-7-19 17:02:19 | 显示全部楼层
回复 8# lujian2036


    项目开发初期,开发都很忙,没时间帮我解决这些问题
这个是我自己提前研究下

怕后面要测试安卓服务器性能的话
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2013-7-19 17:24:36 | 显示全部楼层
回复 13# 张亚洲


    jmeter怎么个简单法啊,我都还没搞懂,官网下了几个软件,都感觉是linux上面的包
然后搜的文档是windows的。我Q305871547,要不一起讨论下啊
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2013-7-22 11:30:16 | 显示全部楼层
回复 5# fanjinchang


    看图片,抓包显示type还是不对

如果写成application/json-rpc,效果也是一样的
但是我抓skd里面的动作,这里显示的 type 类型是application/json-rpc

云层转码问题还在看,具体不知道不知道转成什么编码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2013-7-22 14:04:07 | 显示全部楼层
回复 12# 云层


   

转了2次编码
图片是用这样的格式,转为utf-8编码发出去,后台服务报错

另外试了下stringInUnicode,转了也是差不多类似的错误

这个lr用这种方法发出去的body参数,我用抓包工具查看,是text/html格式的,但是抓包工具抓的这个程序发出去的消息格式是application/json-rpc这样的

有没什么方法控制这个type格式啊,使其变为application/json-rpc,也许可以解决或验证是不是这里出问题了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2013-7-22 17:09:02 | 显示全部楼层
那个application/json-rpc格式的数据,能发送出去了,
如果body里面写这样的
{\"phoneNo\":\"321\",\"visitorName\":\"??\",\"email\":\"mct@mct\",\"visitorId\":\"412326198503153952\"}
之前是下面这样的
signIn: {"data":"{\"phoneNo\":\"321\",\"visitorName\":\"??\",\"email\":\"mct@mct\",\"visitorId\":\"412326198503153952\"}"}
然后lr跑的时候关联抓到的内容是这样的
{"jsonrpc":"2.0","id":"null","error":{"code":-32600,"message":"Invalid Request"}}
抓包的stream内容是下面这样的
51
{"jsonrpc":"2.0","id":"null","error":{"code":-32600,"message":"Invalid Request"}}
0
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2013-7-23 22:46:58 | 显示全部楼层
回复 22# ttbelieve


    移动协议是什么协议?

   协议没错啊,就是http协议的,不过你说的,我明天去试一下
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-10 23:53 , Processed in 0.082913 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表