当在后台实现POST请求的时候,出现如下错误:

必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。

或者是如下错误:

上述是因为由于我们使用的是代理服务器,那个还有一种原因不能忽略,就是如果目标网页的HTTP的版本号为1.0或之前的版本,而代理服务器的本版为1.1或以上。这么这是,代理服务器将不会转发我们的Post请求,并报错‍(417) Unkown

再看wireshark的包信息,其中明确可以看出,协议的版本号为HTTP1.1。这样,我们基本上可以确定‍(417) Unkown的原因:

握手失败,请求头域类型不匹配。

解决方法:

在配置文件加入

<configuration>

<system.net>

<settings>

           <servicePointManager expect100Continue="false" />

</settings>

</system.net>

</configuration>

或者在请求前加入如下代码:

System.Net.ServicePointManager.Expect100Continue = false;//默认是true,所以导致错误

附加两种请求方法:

方法一:

        public ActionResult b()
{
System.Net.ServicePointManager.Expect100Continue = false;
string Url = "http://xxx";
string PostDataStr = string.Format("userName={0}&pwd={1}","a","b");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = PostDataStr.Length; StreamWriter write = new StreamWriter(request.GetRequestStream(),Encoding.ASCII);
write.Write(PostDataStr);
write.Flush();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string encoding = response.ContentEncoding;
if (encoding==null||encoding.Length<) {
encoding = "UTF-8";
}
StreamReader reader = new StreamReader(response.GetResponseStream(),Encoding.GetEncoding(encoding));
string retstring = reader.ReadToEnd();
return Content(retstring);
}

方法二:

        public async Task<ActionResult> a()
{
System.Net.ServicePointManager.Expect100Continue = false;
string postUrl = "http://xxx";
var postContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("userName", "a"),
new KeyValuePair<string, string>("pwd","b") });
var httpResponse = await new HttpClient().PostAsync(postUrl, postContent);
var content = await httpResponse.Content.ReadAsStringAsync();
return Content(content);
}

最新文章

  1. 用javascript实现一个2048游戏
  2. 数据访问模式:Identity Map(标识映射)模式
  3. 修改主机hostname
  4. 初始Jquery--以及工厂函数
  5. noi 2985 数字组合
  6. 网易前端JavaScript编码规范【转】
  7. C#选择排序详解
  8. asp.net基础概念总结
  9. Java面试常考------------------------垃圾收集算法
  10. 硬核机器学习干货,手把手教你写KNN!
  11. 英语笔记3(git)
  12. (转)Flex 布局教程:
  13. 数组的es6新方法
  14. linux基础编程:IO模型:阻塞/非阻塞/IO复用 同步/异步 Select/Epoll/AIO(转载)
  15. BZOJ.1879.[SDOI2009]Bill的挑战(状压DP)
  16. MFC增强----任务对话框CTaskDialog类
  17. [Canvas]用透明PNG图在背景上画前景能不遮挡背景
  18. DB2自增长ID
  19. Java中的平衡树
  20. 搜集的一些酷炫的金属色 ,RGB值 和大家分享一下

热门文章

  1. Liers 树状数组+中国剩余定理
  2. wireshark数据包分析实战 第二章
  3. docker镜像文件导入与导出
  4. Python实战之SocketServer模块
  5. ubuntu 11.04侧边栏怎么添加图标
  6. Cookie同域,跨域单点登录
  7. 数据库表反向生成(二) Django ORM inspectdb
  8. 51nod 1510 最小化序列 | DP 贪心
  9. SAP 邮件发送
  10. java 集合之实现类ArrayList 和 LinkedList