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;
  • 相关阅读:
    python之 json里字典中的value去重
    matlab 中出现的错误 原因及解决办法
    利用matlab将二进制小数转换为十进制小数
    Git学习笔记
    关于升级OSX10.10 Yosemite后Matlab无法启动的解决办法
    编译macvim报错的macvim failed to build on 10.9 because of x11解决办法
    安装pydelicious遇到的一些问题
    用VerilogHDL编写的可调占空比的PWM波形设计
    精确了13倍是什么意思?
    知乎周刊之程序人生概要
  • 原文地址:https://www.cnblogs.com/tianguook/p/2101793.html
Copyright © 2011-2022 走看看