zoukankan      html  css  js  c++  java
  • C# 模拟post数据提交时 出现如下错误: System.Net.WebException: 远程服务器返回错误: (417) Expectation Failed 的解决办法

    一般情况的代码,重点在出错的那段代码,其他的代码可以根据自己的情况写相应的代码:

    HttpWebRequest req=WebRequest.Create(url1) as HttpWebRequest;
       req.Method="POST";
       req.Accept="application/json, text/javascript, */*";
       req.Referer=url2;

       req.UserAgent="Mozilla/4.0";
       req.ContentType="application/x-www-form-urlencoded";
       req.CookieContainer=cookie;
       req.KeepAlive=true;
       string postString="uname=ioriliaotest3&" +
                      "password=19850420&" +
                      "passwordconf=19850420" +
                      "&mobile=&verifycode="+
                       HttpUtility.UrlEncode(textBox1.Text,encoding)+
                      "&dmain=163.com&version=regvf1";
       byte[] postByte=Encoding.ASCII.GetBytes(postString);
       Stream reqStream=req.GetRequestStream();
       reqStream.Write(postByte,0,postByte.Length);
       reqStream.Close();
       HttpWebResponse resp=req.GetResponse() as HttpWebResponse;//出错 WebException: 远程服务器返回错误: (417) Expectation Failed
       Stream respStream=resp.GetResponseStream();
       StreamReader respReader=new StreamReader(respStream,encoding);
       richTextBox1.AppendText(respReader.ReadToEnd());
       respStream.Close();
       respReader.Close();

    归纳其原因:
    httpwebrequest控件有一个透明过程,先向服务方查询url是否存在而不发送POST的内容,服务器如果证实url是可访问的,才发送POST,早期的Apache就认为这是一种错误,而IIS却可以正确应答

    解决方法:

    写.net程序时在始化代码中,或者配置文件app.config之类的文件中
    加下这么一句就可以了

    ServicePointManager.Expect100Continue = false;
  • 相关阅读:
    对list集合中的对象进行排序(转载)
    关键字的作用
    CocoaPods的 安装 /卸载/升级
    block基本使用和底层
    程序启动 - 类调用的方法
    成员变量修饰词的作用
    宏(define)与常量(const)
    iOS
    监听网络状态
    nil、Nil、NULL与NSNull的区别及应用
  • 原文地址:https://www.cnblogs.com/tianguook/p/2101793.html
Copyright © 2011-2022 走看看