当在后台实现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);
}

必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。解决方法的更多相关文章

  1. 上传文件报错System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。

    在上传文件的时候报错. 错误: System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetRe ...

  2. 异常:必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]

    异常描述 异常:必须先将 ContentLength 字节写入请求流,然后再调用 [Begin] 解决方案 //解决异常:必须先将 ContentLength 字节写入请求流,然后再调用 [Begin ...

  3. ios/iphone手机请求微信用户头像错位BUG及解决方法

    转:http://www.jslover.com/code/527.html ios/iphone手机请求微信用户头像错位BUG及解决方法 发布时间:2014-12-01 16:37:01 评论数:0 ...

  4. linux 系统中将数据写入文档不能立即保存问题的解决方法

    应用场景: 设备跑的是Linux系统,与PC上位机进行通信,上位机可以给Linux发送设备配置信息,Linux将配置信息写入文件中以备设备断电重启时使用. bug现象: 设备正常运行,设备配置信息为A ...

  5. Laravel dingo,HTTP的请求头(accept)无法携带版本号的解决方法

    Laravel dingo,HTTP的请求头(accept)无法携带版本号的解决方法  2017年9月6日  原创分享  zencodex  使用 Laravel dingo 做api开发时,涉及 A ...

  6. 【转】drupal7请求异常,执行时间过长的解决方法

    drupal7请求错误,执行时间过长的解决办法 根据你的系统或网络设置Drupal不能读取网页,造成功能缺失.可能是web服务器配置或PHP设置引起的,可用更新.获取更新源.使用OpenID登 录或使 ...

  7. 【jquery】ajax 请求成功后新开窗口被拦截解决方法

    问题: 前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是很可惜被浏览器给拦截了,怎么解决这个问题呢? 分析: 浏览器之所以 ...

  8. drupal7请求异常,执行时间过长的解决方法

    drupal7请求错误,执行时间过长的解决办法 根据你的系统或网络设置Drupal不能读取网页,造成功能缺失.可能是web服务器配置或PHP设置引起的,可用更新.获取更新源.使用OpenID登 录或使 ...

  9. Java 使用流读文本数据时乱码 解决方法

    一.问题描述 当我使用FileReader读取文本文件里的汉字时,读出来的是乱码.但为什么字符是正常的呢??? 二.原因探究 其根本原因在于编码标准不同.汉字采用gbk,而idea使用UTF-8.gb ...

随机推荐

  1. IOS第四天(2:字典转模型plist)

    HMQuestion.h #import <Foundation/Foundation.h> @interface HMQuestion : NSObject @property (non ...

  2. Git 从服务器取得最新代码覆盖本地

    第一种方法 git fetch --all git reset --hard origin/master git fetch下载远程最新的, 然后,git reset master分支重置 第二种方法 ...

  3. RAC 环境下参数文件(spfile)管理

    RAC环境下,初始化参数文件与但实例下参数文件有些异同,主要表现在初始化参数可以为多个实例公用,也可以单独设置各个实例的初始化参数.对于那些非共用的初始化参数则必须要单独设置,而共用的则可以单独设置, ...

  4. 393. UTF-8 Validation

    393. UTF-8 Validation 这个题很明确,刚开始我以为只能是一个utf,长度大于5的都判断为false,后来才明白题意. 有个小trick,就是长度大于1的时候,判断第一个数字开始1的 ...

  5. eclipse有时新建一个PHP文件或者是HTML文件没有快捷键太麻烦了,总要用鼠标点 怎么创建自己的快捷键呢?

    问题:总是在eclipse上编写PHp程序和对应的HMTL模板文件,但是却没有可以直接新PHP文件和HTMl文件的快捷方式,苦恼. 在百度上搜了一下,我们是可以创建自己的组合快捷键的. 创建快捷键的方 ...

  6. 基于三星ARM9(S3C2410)的交通违章抓拍系统的开发

    ARM9的交通违章抓拍系统的开发   ARM9的交通违章抓拍系统的开发 智能交通系统(ITS)将先进的信息技术.数据通讯传输技术.电子控制技术.计算机处理技术等应用于交通运输行业,从而实现各种运输方式 ...

  7. 《得知opencv》注意事项——矩阵和图像处理——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero

    矩阵和图像的操作 (1)cvOr函数 其结构 void cvOr(//两个矩阵相应元素做或执行 const CvArr* src1,//矩阵1 const CvArr* src2,//矩阵2 CvAr ...

  8. 极光推送CTO黄鑫:技术人员要建立自己的知识图谱

    本周,我们邀请到了极光推送CTO兼首席科学家黄鑫进行人物专访,在展示风采的同时,也分享会员们对技术.对工作.对人生的感悟.       扎实的底层服务是扩张关键 极光推送是一个做第三方云服务的公司,在 ...

  9. Linux内核分析实验四----

    一.用户态.内核态 权限分级——为了系统本身更稳定,使系统不宜崩溃.(并不是所有程序员缩写的代码都很健壮!!) x86 CPU四种不同的执行级别:0(内核态)—3(用户态) 区分方法:CS:EIP(C ...

  10. NYOJ--7

    原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=7 分析:x与y分开考虑,分别排序,邮局定在最中间的两个数之间就可以了. 街区最短路径问题 ...