表单编码问题

真是晕啊!

这几天做个模拟机器人居然出现这样一个表单编码的问题,之前从来都没遇到过,我要登录的一个页面是需要提交viewstate,但viewstate中含有很多空格,我在请求提交数据的时候设置了表单的编码request.ContentType = "application/x-www-form-urlencoded";post过去的数据也经过了UrlEcode编码,但始终是模拟登录不了,找了两天都找不到问题是出在哪,任务进度的时间就快到了,真是急死我了,实在没办法,请求项目经理帮助,经过研究发现原来是ViewState中空格编码的问题,viewstate经过HttpUtility.UrlEncode编码后,空格编码成了+号,这样是不行的,这里还需要把+替换成%20才行,唉,终于天晴了,可以松口气了,明天加油,继续把下面的任务完成。


参考资料:

问题分析:

    查了下JS encode的相关内容, 总于发现+号的秘密。
   html
中因为一些非标准的做法,将+等同于空格进行处理(当Html的表单被提交时, 每个表单域都会被Url编码之后才在被发送。由于历史的原因,表单使用的Url编码实现并不符合最新的标准。例如对于空格使用的编码并不是%20,而是+号,如果表单使用的是Post方法提交的,我们可以在HTTP头中看到有一个Content-Type的header,值为 application/x-www-form-urlencoded,大部分应用程序均能处理这种非标准实现的Url编码)。
    在搜索引擎中做了下尝试: 
    keyword =  e h变送器  , url =http://www.google.cn/search?hl=zh-CN&newwindow=1&q=e+h变送器   (空格被转化为+号)
    keyword = e+ h变送器 , url = http://www.google.cn/search?hl=zh-CN&newwindow=1&q=e%2Bh变送器  (+号被进行了转义为%2B,程序才能正常处理)


参考地址:http://agapple.iteye.com/blog/773061


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值