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;
  • 相关阅读:
    portal商品展示功能逻辑
    springboot读取自己定义的配置文件的方式以及使用joda_time来处理时间日期
    文件上传与下载总结
    swagger2的常用注解,传递参数的注意使用方法
    小知识回顾
    springboot如何集成mybatis的pagehelper分页插件
    MySQL基础之第8章 视图
    MySQL基础之第7章 索引
    MySQL基础之第6章 创建、修改和删除表 .
    MySQL基础之第5章 操作数据库
  • 原文地址:https://www.cnblogs.com/tianguook/p/2101793.html
Copyright © 2011-2022 走看看