51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4375|回复: 3
打印 上一主题 下一主题

[原创] web_submit_data提交的表单数据参数化问题,求解!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-6-22 13:38:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上传一个excel文件,包含一些ID值,服务器经过校验,数据库确实存在的标识再进行下发到其他系统,
录制时,向服务器发送下发请求:
        web_submit_data("releaseOrganStaffChnlType.action",
                "Action=....(省略)",
                "Method=POST",
                "EncType=multipart/form-data",
                "RecContentType=text/html",
                "Referer=....(省略)",
                "Snapshot=t25.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=targetType", "Value=ORG", ENDITEM,
                "Name=txt", "Value=", ENDITEM,
                "Name=batchFile", "Value=", "File=Yes", ENDITEM,
        "Name=staffIds", "Value=769062420", ENDITEM,
                "Name=staffIds", "Value=769038440", ENDITEM,
                "Name=staffIds", "Value=769038441", ENDITEM,

                "Name=staffIds", "Value=100003308", ENDITEM,
                "Name=staffIds", "Value=100004516", ENDITEM,
                "Name=staffIds", "Value=100005440", ENDITEM,
                LAST);
已成功关联服务器回复的经过校验的这些ID,上传的EXCEL已进行参数化,每个文件包含的ID数不固定,也就是服务器返回的校验过的ID数目不确定,
      "Name=staffIds", "Value=769062420", ENDITEM,
                "Name=staffIds", "Value=769038440", ENDITEM,
                "Name=staffIds", "Value=769038441", ENDITEM,
                "Name=staffIds", "Value=100003308", ENDITEM,
                "Name=staffIds", "Value=100004516", ENDITEM,
                "Name=staffIds", "Value=100005440", ENDITEM,
这一段怎么进行参数化?

在网上查了资料说手动将web_submit_data这个函数写成等同的web_custom_request,将里头的body进行参数化就可以,但是抓到的上传的body是
-----------------------------7db23249056c
Content-Disposition: form-data; name="targetType"

ORG
-----------------------------7db23249056c
Content-Disposition: form-data; name="txt"


-----------------------------7db23249056c
Content-Disposition: form-data; name="batchFile"; filename=""
Content-Type: application/octet-stream


-----------------------------7db23249056c
Content-Disposition: form-data; name="staffIds"

769038440
-----------------------------7db23249056c
Content-Disposition: form-data; name="staffIds"

769038441
-----------------------------7db23249056c
Content-Disposition: form-data; name="staffIds"

100003308
-----------------------------7db23249056c
Content-Disposition: form-data; name="staffIds"

100004516
-----------------------------7db23249056c--
这个感觉少了第一个和最后一个数据,这个怎么进行参数化?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2011-6-23 16:13:37 | 只看该作者
自己搞定了,手动编写成web_custom_request替换了
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2011-6-30 11:44:01 | 只看该作者
可以把你写的方法web_custom_request共享出来吗
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2011-6-30 17:48:40 | 只看该作者
strcpy(staffIdVertifyList, "Body=-----------------------------7db23249056c\r\nContent-Disposition: form-data; name=\"targetType\"\r\n"
                                                   "\r\nORG\r\n-----------------------------7db23249056c\r\nContent-Disposition: form-data; name=\"txt\"\r\n"
                                                   "\r\n-----------------------------7db23249056c\r\nContent-Disposition: form-data; name=\"batchFile\"; filename=\"\""
                                                   "\r\nContent-Type: application/octet-stream\r\n\r\n-----------------------------7db23249056c");
                sprintf(returnOrgTable,lr_eval_string("{orgVertifyString}"));
                size=strlen((const char*)returnOrgTable);

                for(;i<size;i++)
                {
                        if(returnOrgTable[i]=='<' && returnOrgTable[i+1]=='t' && returnOrgTable[i+2]=='r' )
                        {
                                i+=19;
                                j=0;
             memset(tmpOrgId,0,50);
                                while(returnOrgTable[i]!='<')
                                {
                                        tmpOrgId[j]=returnOrgTable[i];
                                        j++;
                                        i++;
                                }
                                lr_log_message("tmpOrgId=%s",tmpOrgId);
                                memset(tmpOrgUnit,0,200);

                sprintf(tmpOrgUnit,"\r\nContent-Disposition: form-data; name=\"staffIds\"\r\n\r\n%s\r\n-----------------------------7db23249056c",tmpOrgId);
lr_log_message("tmpOrgUnit=%s",tmpOrgUnit);
                strcat(staffIdVertifyList,tmpOrgUnit);
                                lr_log_message("staffIdVertifyList=%s",staffIdVertifyList);
                        }
                }
                strcat(staffIdVertifyList,"--\r\n");  //结束

就是后面又碰到问题,参数化文件名后,上传的文件中如果包含的ID值太多,我关联的时候是把整个表取到,数据太多,表太大会出现内存溢出的现象
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-16 18:45 , Processed in 0.064603 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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