日期:2014-05-18  浏览次数:20870 次

C# form如何使用Socket给网页发送POST数据
最近写了个软件,用到了POST发送数据包给网页,但是部分电脑报错:服务器提交了协议冲突,问了下度娘,也问了谷姐,都是说app.config添加什么什么=true之内的,用了,问题依旧存在,然后寻找原因,最后问题找到了,IE的问题,为了确认到底是不是IE的问题,专门用虚拟机装了个IE6的XP,结果提示服务器提交了协议冲突,然后关闭软件,安装IE8后,重启,软件工作正常。但是IE9也出现了这种问题。我是WIN7 X64 IE8,没问题,但是人家用不了,所以就想问问Socket如何发送POST数据给网页呢?

------解决方案--------------------
Socket 太麻烦了。重新封装很多数据格式啊。

HttpWebRequest

HttpWebResponse
你好好研究下吧 很方便。 顺便给你个简单的例子

例子来源于互联网,大概就是这么一种格式。如果这个你都搞不懂那就没办法了。
C# code

Encoding myEncoding = Encoding.GetEncoding("gb2312");  
string param =   
HttpUtility.UrlEncode("参数一", myEncoding) +   
"=" + HttpUtility.UrlEncode("值一", myEncoding) +   
"&" + HttpUtility.UrlEncode("参数二", myEncoding) +  
"=" + HttpUtility.UrlEncode("值二", myEncoding);  
 
byte[] postBytes = Encoding.ASCII.GetBytes(param);  
 
HttpWebRequest req = (HttpWebRequest)  
HttpWebRequest.Create( "http://www.baidu.com/s" );  
req.Method = "POST";  
req.ContentType =   
"application/x-www-form-urlencoded;charset=gb2312";  
req.ContentLength = postBytes.Length;  
 
using (Stream reqStream = req.GetRequestStream())  
{  
   reqStream.Write(bs, 0, bs.Length);  
}  
using (WebResponse wr = req.GetResponse())  
{  
   //在这里对接收到的页面内容进行处理  
}