Saeb Amini Saeb Amini - 3 months ago 39
C# Question

HTTP POST Returns Error: 417 "Expectation Failed."

When I try to POST to a URL it results in the following exception:


The remote server returned an error:
(417) Expectation Failed.


Here's a sample code:

var client = new WebClient();

var postData = new NameValueCollection();
postData.Add("postParamName", "postParamValue");

byte[] responseBytes = client.UploadValues("http://...", postData);
string response = Encoding.UTF8.GetString(responseBytes); // (417) Expectation Failed.


Using an
HttpWebRequest/HttpWebResponse
pair or an
HttpClient
doesn't make a difference.

What's causing this exception?

Answer

System.Net.HttpWebRequest adds the header 'HTTP header "Expect: 100-Continue"' to every request unless you explicitly ask it not to by setting this static property to false:

System.Net.ServicePointManager.Expect100Continue = false;

Some servers choke on that header and send back the 417 error you're seeing.

Give that a shot.

Comments