软件向服务器发送信息,使用自定义请求向服务器发送请求的方法(转自论坛)...

使用自定义请求向服务器发送请求的方法(转自论坛)

上一篇 /

下一篇  2009-10-28 22:43:46

在LR中,web_submit_data中字符串的拼接有个问题,就是不能使用C中的字符串类型去直接替换,就算使用了lr_save_string函数,仍然可能会存在问题,以下举例说明。

脚本背景如下:

web_submit_data(classicustomermaterial_significanteventinfo.jsf")返回的页面上可能存在多条记录,同时记录数不确定,因此需要设定一个循环,来重复关联,并执行后续的操作,如:

web_submit_data("creditReviewClassiLoanMaterial.jsf",

ITEMDATA,

"Name=body:frm2:classiAssetsVOTable_0:check", "Value=true", ENDITEM,

"Name=body:frm2:classiAssetsVOTable_1:check", "Value=true", ENDITEM,

"Name=body:frm2:_id148", "Value=填写债项级分类信息", ENDITEM,

"Name=body:frm2_SUBMIT", "Value=1", ENDITEM,

"Name=autoScroll", "Value=0,102", ENDITEM,

"Name=body:frm2:_link_hidden_", "Value=", ENDITEM,

LAST);

假定黑体部分的脚本classiAssetsVOTable_0:check、classiAssetsVOTable_1:check是需要循环进行关联的。如果有实际操作过的朋友就不难发现,0、1这些数字很难在函数中用变量替换。这个时候有一个简便的方法,就是使用LR中提供的自定义请求函数来向服务器提交请求,即使用web_custom_request函数。该函数的使用方法很简单,最主要的是在Body部分把ITEMDATA之后的“Name”和“Value”通过{Name}={Value}的形式组合起来,并且在多组值之间用“&”分隔。如:

web_custom_request("creditReviewClassiLoanMaterial.jsf",

"Method=POST",

"RecContentType=text/html",

"Snapshot=t19.inf",

"Mode=HTML",

"Body=body:frm2:classiAssetsVOTable_1:check=true&

body:frm2:classiAssetsVOTable_%2:check=true&

body:frm2:_id148=填写债项级分类信息&

body:frm2_SUBMIT=1&

autoScroll=0,102&

body:frm2:_link_hidden_="

LAST);

关于该函数更详细的信息可以参考LR的帮助文档。

回放脚本,成功!通过执行结果我们可以看到,使用web_custom_request向服务器发送请求和使用web_submit_data发送请求起到的效果是完全一样的。不过看到这里,可能大家会有一个疑问:为什么要使用自定义请求报文来代替原有的web_submit_data呢?用原来的这个不是好好的吗?主要是因为在有些时候,我们需要使用自定义的字符串来对脚本进行一些特殊处理,例如在本例中,我们就遇到了这样的问题。由于我们需要将

"Name=body:frm2:classiAssetsVOTable_0:check", "Value=true", ENDITEM,

"Name=body:frm2:classiAssetsVOTable_1:check", "Value=true", ENDITEM,

这部分脚本放进循环体中,因此我们希望可以通过字符串拼接的方式,组装出这一整串字符,放进请求函数中,而在web_submit_data中很难达到这样看似简单的目的(我一直觉得应该还是有办法的,但我试了很久一直不成功。),所以只好另找出路。

以下是脚本的示例:

1、  利用字符串操作函数组装所需的字符串

strcpy(str,"BODY=");

for(i=0;i

{

sprintf(tmp,"body:frm2:classiAssetsVOTable_%d:check=true&",i);

strcat(str, tmp);

}

strcat(str,"body:frm2:_id148=填写债项级分类信息&body:frm2_SUBMIT=1&autoScroll=0,102&body:frm2:_link_hidden_=");

2、  在自定义请求函数中使用组装好的字符串。

web_custom_request("creditReviewClassiLoanMaterial.jsf",

"URL={url}",

"Method=POST",

"RecContentType=text/html",

"Referer={url}",

"Snapshot=t19.inf",

"Mode=HTML",

str,

LAST);

可能大家会有一个疑问:为什么要使用自定义请求报文来代替原有的web_submit_data呢?用原来的这个不是好好的吗?主要是因为在有些时候,我们需要使用自定义的字符串来对脚本进行一些特殊处理,例如在本例中,我们就遇到了这样的问题。由于我们需要将

"Name=body:frm2:classiAssetsVOTable_0:check", "Value=true", ENDITEM,

"Name=body:frm2:classiAssetsVOTable_1:check", "Value=true", ENDITEM,

这部分脚本放进循环体中,因此我们希望可以通过字符串拼接的方式,组装出这一整串字符,放进请求函数中,而在web_submit_data中很难达到这样看似简单的目的

TAG:

我来说两句

验证

ada834077f6a48ad60a11ec0354fde86.png

提交评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值