首页 新闻 会员 周边 捐助

编码问题 WebClient POST 或 GET 中文参数

0
悬赏园豆:5 [已解决问题] 解决于 2013-08-31 17:40

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  方式已经成功。

Mundo Novo的主页 Mundo Novo | 初学一级 | 园豆:69
提问于:2013-08-21 12:58
< >
分享
最佳答案
0

HttpUtility.UrlEncode

收获园豆:5
Launcher | 高人七级 |园豆:45050 | 2013-08-21 13:06

师傅: 这个类我试过了 编码后以 POST 方式传入网站是乱码

Mundo Novo | 园豆:69 (初学一级) | 2013-08-21 13:09

@Mundo Novo:

1、 url 上的用 HttpUtility.UrlEncode;

2、post 的内容也就是 http body 内容需要根据服务器的规则来编码。

Launcher | 园豆:45050 (高人七级) | 2013-08-21 13:11

@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 | 园豆:69 (初学一级) | 2013-08-21 13:29

@Mundo Novo: 你的代码,除了 System.Text.Encoding.Default 有明显的逻辑错误外,看不出有什么问题。主要的问题在于你没搞清楚你的http body 应该用什么编码,你的 http header 应该填写什么样的 content-type 和 charset。

所以,你可以通过抓包工具抓取一个通过 IE 访问的包,分析下请求的具体格式是什么。

Launcher | 园豆:45050 (高人七级) | 2013-08-21 13:33

@Launcher: 谢谢,我明白我应该怎么做了。 

Mundo Novo | 园豆:69 (初学一级) | 2013-08-21 13:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册