【高手请进】请教下,用LR向服务器发送HTTP协议的XML格式文件字段问题
本帖最后由 lunahaha527 于 2013-9-12 15:24 编辑具体的发送格式如下:
Action()
{
lr_start_transaction("xxxxServiceReq");
web_custom_request("xxxxHTTPRequest",
"URL=http://192.168.1.115:8080/pay/getToken",
"Method=POST",
"Resource=0",
"RecContentType=text/xml",
"Referer=",
"Mode=HTML",
"EncType=text/xml; charset=utf-8",
"Body=<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"\n<getToken>"
"\n<appUser>jqf_bus_api1.126.com</appUser>"
"\n<appPwd>21232F297A57A5A743894A0E4A801FC3</appPwd>"
"\n<appSign>Vf01RfaV/RXtelr5TO6l+YtHz5cdxlB1YIDi0/NBTU0/sp0QJfWN68yjCr/S/2YmbueYq8J1DOFKarMqRG4GFg==</appSign>"
"\n<billId>888</billId>"
"\n<amt>100</amt>"
"\n<currencyCode>USD</currencyCode>"
"\n</getToken>",
LAST);
lr_end_transaction("xxxxgServiceReq", LR_AUTO);
return 0;
}
查看服务器可以接收到此请求。但是LR日志中报:
Action.c(5): 通知: 事务 "xxxxServiceReq" 已启动。
Action.c(6): 警告 -26663: 缺少 Content-Length 值或该值无效
1)【请问这个Length怎么加到上述请求中】
Action.c(6): web_custom_request("xxxxHTTPRequest") 最高严重级别为“warning”,135 个正文字节,209 个标头字节,11 个成块开销字节
Action.c(24): 错误: 无法结束事务 "xxxxgServiceReq" (按名称)。请检查是否进行了调用以启动事务操作。
2)【剩下的三条action是否和第一个问题有关呢?还是脚本中还有其它问题???】 应该是你请求前面少了点关于Content-Length 的声明 回复 2# 云层
就是不知道这个Content-Length加哪儿合适
貌似加哪儿都提示这个。
能告诉我这个字段应该放在哪边合适吗?:dizzy: 试试web_add_header 回复 4# 云层
请问云层,有关web_add_header在书里那部分有详细介绍啊?另外,对于新手初学脚本编写,有没有好的建议呢 回复 4# 云层
to 云层:
请问web_add_header在书里哪个章节有介绍,另外,对于新人要学习LR脚本编程还想快速上手,有没有比较好的学习方法呢? 没有技巧
1.学会沟通
2.学会看帮助 本帖最后由 lunahaha527 于 2013-9-10 14:23 编辑
回复 7# 云层
我现在加了:
Action()
{
lr_start_transaction("ServiceReq");
web_add_header("Content-Length","342");
web_custom_request("HTTPRequest",
"URL=http://192.168.1.160:8080/pay/getToken",
"Method=POST",
"Resource=0",
"RecContentType=text/xml",
"Referer=",
"Mode=HTML",
"EncType=text/xml; charset=utf-8",
"Body=<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"\n<getToken>"
"\n<appUser>jqf_bus_api1.126.com</appUser>"
"\n<appPwd>21232F297A57A5A743894A0E4A801FC3</appPwd>"
"\n<appSign>Vf01RfaV/RXtelr5TO6l+YtHz5cdxlB1YIDi0/NBTU0/sp0QJfWN68yjCr/S/2YmbueYq8J1DOFKarMqRG4GFg==</appSign>"
"\n<billId>888</billId>"
"\n<amt>100</amt>"
"\n<currencyCode>USD</currencyCode>"
"\n</getToken>",
LAST);
lr_end_transaction("ServiceReq", LR_AUTO);
return 0;
}
日志显示为:
Starting action Action.
Action.c(8): Notify: Transaction "ServiceReq" started.
Action.c(9): Warning -26593: The header being added may cause unpredictable results when applied to all ensuing URLs. It is added anyway
Action.c(9): web_add_header("Content-Length") highest severity level was "warning"
Action.c(10): Warning -26663: Content-Length value is missing or invalid
Action.c(10): web_custom_request("HTTPRequest") highest severity level was "warning", 73 body bytes, 209 header bytes, 11 chunking overhead bytes
Action.c(28): Notify: Transaction "ServiceReq" ended with "Pass" status (Duration: 20.7967 Wasted Time: 0.6646).
问题:如上的日志是否我定义的长度有误???怎么计算这个长度呢?
web_custom_request("HTTPRequest") highest severity level was "warning", 73 body bytes, 209 header bytes, 11 chunking overhead bytes
这个错误又表明了什么呢 用这个函数试试:web_add_auto_header ,它比web_add_header灵活 回复 9# 地壳
还是不行,错误依然存在:dizzy: 有人知道这个问题怎么解决不??急啊 高人请进一下,现在卡在这儿不能动了。一直提醒content-length不对。有谁知道怎么计算发送的长度不?
或者可以自动获取??? 你要问问开发到底他们是为啥要验这个东西,还是说你的xml抛过去确实超长度了 回复 13# 云层
问过开发了,没有对content-length做判断,我感觉停在这儿是LR工具检查有问题吧
arning -26663: Content-Length value is missing or invalid
Action.c(63): web_custom_request("HTTPRequest") highest severity level was "warning", 73 body bytes, 209 header bytes, 11 chunking overhead bytes
Action.c(76): Notify: Transaction "ServiceReq2" ended with "Pass" status (Duration: 20.1163 Wasted Time: 0.0048).
真不知道这个值是怎么计算才正确! 真搞不懂了,用其它的工具,能够计算出来的固定的length放到脚本里面还是提示这个。
to 云层:
如果存在warning是否会对整个性能有影响??? 本帖最后由 lunahaha527 于 2013-9-12 15:55 编辑
回复 15# lunahaha527
构造虚拟用户稍跑了下,就一堆fail。看来是有影响。这个问题很头疼啊 回复 14# lunahaha527
超长的可能性也不大吧,因为我的脚本并不是下载功能,只是发个请求过去,不会超过110字节 高手们,哪位谁能够告诉我啊?
现在就卡在这个地方了 回复 1# lunahaha527
HTTP是在TCP层之上的,你可用一个HTTP+XML的工具发送一下,然后抓包,把数据报文拿下来,利用winsocket发送。
content_length是一定要指定的,要不然server端怎么知道它有没有接收完呢? 本帖最后由 lunahaha527 于 2013-9-17 13:43 编辑
回复 19# 筱卺厸
高手,能否说详细点,用WINSOCK具体详细怎么获取呢?能否详细说下思路?
现在我已经抓到HTTP的包了:
POST /pay/authToken HTTP/1.1
Host: 192.168.1.115:8080
Content-Length: 92
<?xml version="1.0" encoding="UTF-8"?>
<authToken>
<token>38KyBU7n</token>
</authToken>
我从网上down了个socket程序
类似如下:
;WSRData 2 1
send buf0 839"------请问这个值是否是真实抓包中获取到的发送请求的长度呢?目前我的脚本执行时,应该是这个值未给定造成的,怎么获取呢
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Transaction>
<Transaction_Header>
<ext_attributes/>
<processes/>
<transaction_rollback/>
</Transaction_Header>
·········
</request>
<response/>
<Multi_Request/>
</Transaction_Body>
</Transaction>
#"
页:
[1]
2