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

解决方案 »

  1.   

    为啥要用socket?
    为啥直接用基于http的?
    为啥不用WebClient?
    http://www.cnblogs.com/liushuling/archive/2009/12/04/1617324.html
      

  2.   

    Socket 太麻烦了。重新封装很多数据格式啊。HttpWebRequest

    HttpWebResponse
    你好好研究下吧 很方便。 顺便给你个简单的例子例子来源于互联网,大概就是这么一种格式。如果这个你都搞不懂那就没办法了。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())  
    {  
       //在这里对接收到的页面内容进行处理  

      

  3.   

    WebClient 操作起来很麻烦。
      

  4.   

    为了方便对数据的操作的一般我都是用winform的webbrowser,
    设置一个隐藏的webbrowser,指向一个用装置js的html页面,
    然后与服务数据的交互全部通过Ajax。