您的位置:首页 > 编程语言 > C#

C# 模拟post数据提交时 出现如下错误: System.Net.WebException: 远程服务器返回错误: (417) Expectation Failed 的解决办法

2011-07-09 15:13 1336 查看
一般情况的代码,重点在出错的那段代码,其他的代码可以根据自己的情况写相应的代码:

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐