51Testing软件测试论坛

标题: 测试WebService出现“server returned an incorrectly formatted SOAP response”错误 [打印本页]

作者: hsj8038    时间: 2006-9-27 16:41
标题: 测试WebService出现“server returned an incorrectly formatted SOAP response”错误
我刚开始使用LoadRunner,测试WebService性能,就碰到了一个问题,现将问题描述一下,希望大家帮我找一下原因。
我使用LoadRunner的测试WebService向导,自动产生测试脚本,脚本为:
vuser_init()
{

        web_service_call( "StepName=DeletePatBloodCapacity_101",
                "SOAPMethod=IHDWSBlood.IHDWSBloodSoap.DeletePatBloodCapacity",
                "ResponseParam=response",
                "WSDL=http://192.168.66.5/IHDClinic/IHDBlood.asmx?WSDL",
                "Snapshot=t1159344284.inf",
                BEGIN_ARGUMENTS,
                "strApplyNum=auto string",
                END_ARGUMENTS,
                BEGIN_RESULT,
                END_RESULT,
                LAST);

        lr_think_time(3);



        return 0;
}

运行的时候出现错误:
vuser_init.c(4): web headers not matching emulated client removed.
vuser_init.c(4): Error: server returned an incorrectly formatted SOAP response
vuser_init.c(4): Error: web_service_call "DeletePatBloodCapacity_101" execution failed
Abort was called from an action.

然后我打开日志开关,看到日志中有这样的信息:
...
vuser_init.c(4): Notify: Saving Parameter "response = <?xml version="1.0"  encoding="zh_cn"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><DeletePatBloodCapacityResponse xmlns="http://tempuri.org/"><DeletePatBloodCapacityResult>0</DeletePatBloodCapacityResult></DeletePatBloodCapacityResponse></soap:Body></soap:Envelope>"
...

WebService一般都使用UTF-8编码的,我的也是,可为什么系统在保存参数值的时候,会将编码改为“zh_cn"?我试着吧这段文字复制出来成为一个文件,发现根本没有"zh_cn"这个编码格式。我不知道系统怎么会改过来的?

对于这个问题,网上提的人也很多,但是说法都不一样,有的说是Soap_header的原因,需要添加一个,有的说是Runtim Setting中设置一下,有的说是调用Soap的参数顺序出现问题,还有的说是8。0的一个Bug,需要一个补丁……

希望碰到这方面问题的高手能给我解答一下,小弟这个急啊
作者: jackloo    时间: 2006-9-27 16:46
它说得很清楚了。
“server returned an incorrectly formatted SOAP response”,说你的服务器返回了一个错误的SOAP格式的响应,那你就看看你的“http://192.168.66.5/IHDClinic/IHDBlood.asmx?WSDL”这个URL地址到底能不能访问了。
我估计原因就是你的机器和192.168.66.5是断开的,或者192.168.66.5上面的应用没启动起来。
作者: hsj8038    时间: 2006-9-27 16:50
to jackloo:
http://192.168.66.5/IHDClinic/IHDBlood.asmx?WSDL”是可以访问的,而且在日志中可以看到服务器和LoadRunner之间的交互信息是正确的,请看日志:
Virtual User Script started
Starting action vuser_init.
vuser_init.c(4): web_service_call "DeletePatBloodCapacity_101" started.
vuser_init.c(4): using client emulation General
vuser_init.c(4): web headers not matching emulated client removed.
vuser_init.c(4): "Content-Type: text/xml; charset=utf-8" header registered for adding to requests from the immediately following Action function          [MsgId: MMSG-26506]
vuser_init.c(4): "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 1.1.4322.573)" header registered for adding to requests from the immediately following Action function          [MsgId: MMSG-26506]
vuser_init.c(4): "SOAPAction: "http://tempuri.org/DeletePatBloodCapacity"" header registered for adding to requests from the immediately following Action function          [MsgId: MMSG-26506]
vuser_init.c(4): t=321ms: Connecting to host 192.168.66.5:80          [MsgId: MMSG-26000]
vuser_init.c(4): t=325ms: Connected socket from 127.0.0.1:2091 to 192.168.66.5:80 in 3 ms          [MsgId: MMSG-26000]
vuser_init.c(4): t=327ms: 335-byte request headers for "http://192.168.66.5/IHDClinic/IHDBlood.asmx" (RelFrameId=1)
vuser_init.c(4):     POST /IHDClinic/IHDBlood.asmx HTTP/1.1\r\n
vuser_init.c(4):     Content-Type: text/xml; charset=utf-8\r\n
vuser_init.c(4):     Cache-Control: no-cache\r\n
vuser_init.c(4):     User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 1.1.4322.57
vuser_init.c(4):     3)\r\n
vuser_init.c(4):     SOAPAction: "http://tempuri.org/DeletePatBloodCapacity"\r\n
vuser_init.c(4):     Accept: */*\r\n
vuser_init.c(4):     Connection: Keep-Alive\r\n
vuser_init.c(4):     Host: 192.168.66.5\r\n
vuser_init.c(4):     Content-Length: 378\r\n
vuser_init.c(4):     \r\n
vuser_init.c(4): t=340ms: 378-byte request body for "http://192.168.66.5/IHDClinic/IHDBlood.asmx" (RelFrameId=1)
vuser_init.c(4):     <?xml version="1.0"  encoding="UTF-8" standalone="no"?><soap:Envelope xmlns:soap="http://s
vuser_init.c(4):     chemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x
vuser_init.c(4):     mlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><DeletePatBloodCapacity xmlns="http
vuser_init.c(4):     ://tempuri.org/"><strApplyNum>auto string</strApplyNum></DeletePatBloodCapacity></soap:Bod
vuser_init.c(4):     y></soap:Envelope>
vuser_init.c(4): t=364ms: 230-byte response headers for "http://192.168.66.5/IHDClinic/IHDBlood.asmx" (RelFrameId=1)
vuser_init.c(4):     HTTP/1.1 200 OK\r\n
vuser_init.c(4):     Date: Wed, 27 Sep 2006 08:05:31 GMT\r\n
vuser_init.c(4):     Server: Microsoft-IIS/6.0\r\n
vuser_init.c(4):     X-Powered-By: ASP.NET\r\n
vuser_init.c(4):     X-AspNet-Version: 2.0.50727\r\n
vuser_init.c(4):     Cache-Control: private, max-age=0\r\n
vuser_init.c(4):     Content-Type: text/xml; charset=utf-8\r\n
vuser_init.c(4):     Content-Length: 401\r\n
vuser_init.c(4):     \r\n
vuser_init.c(4): t=409ms: 401-byte response body for "http://192.168.66.5/IHDClinic/IHDBlood.asmx" (RelFrameId=1)
vuser_init.c(4):     <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.or
vuser_init.c(4):     g/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://
vuser_init.c(4):     www.w3.org/2001/XMLSchema"><soap:Body><DeletePatBloodCapacityResponse xmlns="http://tempur
vuser_init.c(4):     i.org/"><DeletePatBloodCapacityResult>0</DeletePatBloodCapacityResult></DeletePatBloodCapa
vuser_init.c(4):     cityResponse></soap:Body></soap:Envelope>
vuser_init.c(4): t=421ms: Request done "http://192.168.66.5/IHDClinic/IHDBlood.asmx"          [MsgId: MMSG-26000]
vuser_init.c(4): Notify: Saving Parameter "response = <?xml version="1.0"  encoding="zh_cn"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><DeletePatBloodCapacityResponse xmlns="http://tempuri.org/"><DeletePatBloodCapacityResult>0</DeletePatBloodCapacityResult></DeletePatBloodCapacityResponse></soap:Body></soap:Envelope>"
vuser_init.c(4): Error: server returned an incorrectly formatted SOAP response
vuser_init.c(4): Error: web_service_call "DeletePatBloodCapacity_101" execution failed
日志发送请求、服务器响应请求这些XML数据都是对的,唯一错的是LoadRunner对服务器返回过来的数据改了编码方式为"zh_cn"。
作者: jackloo    时间: 2006-9-27 17:05
你把http://192.168.66.5/IHDClinic/IHDBlood.asmx?WSDL放到IE里面执行的结果放出来看看。
作者: netldy    时间: 2006-9-27 21:42
使用web Services协议,需要先注意:
1、安装LR8.0的两个关于web Service的两个补丁(论坛上很多人都说过,下载地址你也可以去找找)
2、安装xmlSPY,这个是为你调试用的,如果你用XMLSPY能按照那个wsdl文件的格式将信息发送过去,那起码说明你的准备都是正确的。
3、新建一个web Service协议,设置好wsdl文件,先不要保存(有的时候保存后反而会出现错误,那个时候需要在菜单里加入那个wsdl文件),直接运行,看看是否能运行通过
4、如果运行通过,那么打开日志,再次运行,记录下面的日志内容
5、根据日志内容,将此web service协议转换为web(http)协议,因为你用web service协议会受globle(大约是这么写的,具体忘记了)的用户数限制,具体怎么转换你可以参照论坛上有位高人曾经写过关于web service的贴子里的格式
作者: juju5288    时间: 2007-1-9 09:43
to:netldy,首先谢谢你提供些有价值的答复,我也遇到相同的问题,请问
1、安装LR8.0的两个关于web Service的两个补丁(论坛上很多人都说过,下载地址你也可以去找找)
能不能说的明白一下,补丁什么名称。
既然建议了,就贴个以前论坛相关的地址,不然我们就要大海捞针了。
作者: juju5288    时间: 2007-1-9 11:14
LR80P34 - LoadRunner 8.0 Web Services Feature Pack

http://webnotes.merc-int.com/pat ... rvicesFP1_setup.exe


LR80P3 - LoadRunner 8.0 Various Fixes and Enhancement for Web Service Solution
http://webnotes.merc-int.com/pat ... ervices_patch_1.exe

安装补丁后,重起电脑就没有这个错误了:)server returned an incorrectly formatted SOAP response

[ 本帖最后由 juju5288 于 2007-1-9 13:19 编辑 ]
作者: yingyu21    时间: 2007-1-24 11:29
wsdl文件如何载入
作者: liaoxj    时间: 2007-5-29 16:19
标题: 回复 #7 juju5288 的帖子
不错!
作者: shihk    时间: 2007-10-15 14:58
极度感谢juju5288,你解决了我头疼的问题
作者: sunkitty    时间: 2008-1-27 16:11
学习了
作者: huoxingyinzi    时间: 2008-12-14 17:08
在run- time -setting ---> webserivce-->clinet emulation-->MS SOAP就能解决这个问题
作者: wjtest    时间: 2011-7-2 16:30
为什么插件地址 打不开??
作者: Deiva    时间: 2012-11-2 10:59
现在两个补丁的下载地址失效了,找不到。
哪位兄台可以提供一下吗?
作者: Deiva    时间: 2012-11-2 11:05
哪们可以提供一下这两个补丁?


LoadRunner 8.0 Web Services Feature Pack
lrunner_web_services_patch_1.exe

LoadRunner 8.0 Various Fixes and Enhancement for Web Service Solution
LR80WebServicesFP1_setup.exe

邮件:deiva@tom.com




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2