分类: LINUX
2017-04-27 20:19:52
必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。
或者是如下错误:
上述是因为由于我们使用的是代理服务器,那个还有一种原因不能忽略,就是如果目标网页的HTTP的版本号为1.0或之前的版本,而代理服务器的本版为1.1或以上。这么这是,代理服务器将不会转发我们的Post请求,并报错?(417) Unkown。
再看wireshark的包信息,其中明确可以看出,协议的版本号为HTTP1.1。这样,我们基本上可以确定?(417) Unkown的原因:
握手失败,请求头域类型不匹配。
解决方法:
在配置文件加入
"false" />
或者在请求前加入如下代码:
System.Net.ServicePointManager.Expect100Continue = false;//默认是true,所以导致错误
附加两种请求方法:
方法一:
public ActionResult b() { System.Net.ServicePointManager.Expect100Continue = false; string Url = ""; 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<1) { encoding = "UTF-8"; } StreamReader reader = new StreamReader(response.GetResponseStream(),Encoding.GetEncoding(encoding)); string retstring = reader.ReadToEnd(); return Content(retstring); }
方法二:
public async Task a() { System.Net.ServicePointManager.Expect100Continue = false; string postUrl = ""; 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); }
Nginx出现413 Request Entity Too Large错误解决方法
http://blog.csdn.net/cengjingcanghai123/article/details/50855011
Nginx出现的413 Request Entity Too Large错误,这个错误一般在上传文件的时候出现,打开nginx主配置文件nginx.conf,找到http{}段,添加
解决方法就是
打开nginx主配置文件nginx.conf,一般在/usr/local/nginx/conf/nginx.conf这个位置,找到http{}段,修改或者添加
代码如下 | 复制代码 |
client_max_body_size 2m; |
然后重启nginx,
代码如下 | 复制代码 |
sudo /etc/init.d/nginxd reload |
即可。
要是以运行的话,这个大小client_max_body_size要和php.ini中的如下值的最大值差不多或者稍大,这样就不会因为提交数据大小不一致出现错误。
代码如下 | 复制代码 |
post_max_size = 2M |
重启NGINX
代码如下 | 复制代码 |
kill -HUP `cat /usr/local/nginx/nginx.pid ` |
恢复正常