WebClient 模拟提交表单
http://www.xxx.net/search.asp?"searchword=有你的小镇
http://www.xxx.net/search.asp?"searchword="%D3%D0%C4%E3%B5%C4%D0%A1%D5%F2
查询结果一样。
但是在用 WebClient 模拟提交表单 searchword ="中文" 是无效的
编码转换也无效。
如果换成 searchword="%D3%D0%C4%E3%B5%C4%D0%A1%D5%F2“
WebClient 就可以
HttpUtility.UrlEncode 编码后提交到对方网站是乱码。
对方网站是:<meta content="text/html; charset=gb2312" http-equiv="ContentType">
求:
解决办法
在研究 WebClient
HttpWebRequest POST 方式已经成功。
HttpUtility.UrlEncode
师傅: 这个类我试过了 编码后以 POST 方式传入网站是乱码
@Mundo Novo:
1、 url 上的用 HttpUtility.UrlEncode;
2、post 的内容也就是 http body 内容需要根据服务器的规则来编码。
@Launcher: 谢谢
GET: HttpUtility.UrlEncode;
POST :根据服务器规则
这点清楚le
------------------------请师傅 看一下我的渣码。
1 string url = "http://www.zerodm.net/search.asp"; 2 WebClient w = new WebClient(); 3 w.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; 4 System.Collections.Specialized.NameValueCollection VarPar = new System.Collections.Specialized.NameValueCollection(); 5 VarPar.Add("searchword","有你的小镇"); 6 byte[] byRemoteInfo = w.UploadValues(url, "POST", VarPar); 7 string sRemoteInfo = System.Text.Encoding.Default.GetString(byRemoteInfo); 8 return sRemoteInfo;
, 虽然不是很明白,看起来很厉害的样子
@Mundo Novo: 你的代码,除了 System.Text.Encoding.Default 有明显的逻辑错误外,看不出有什么问题。主要的问题在于你没搞清楚你的http body 应该用什么编码,你的 http header 应该填写什么样的 content-type 和 charset。
所以,你可以通过抓包工具抓取一个通过 IE 访问的包,分析下请求的具体格式是什么。
@Launcher: 谢谢,我明白我应该怎么做了。