After investigating further it appears this only occurs for .NET
applications which post using form data instead of using URL
parameters.  Here's a sample:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = new NetworkCredential(AccountInfo.UserName,
AccountInfo.Password);
request.PreAuthenticate = true;
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String
(Encoding.ASCII.GetBytes(AccountInfo.UserName + ":" +
AccountInfo.Password)));
byte[] bytes = Encoding.UTF8.GetBytes(data); //Data is what's being
posted
request.ContentLength = bytes.Length;
System.Net.ServicePointManager.Expect100Continue = false;   //NEED
THIS NOW TO FIX ERROR 417
using (Stream requestStream = request.GetRequestStream())
{
    requestStream.Write(bytes, 0, bytes.Length);
    requestStream.Flush();
}
 using (HttpWebResponse response = (HttpWebResponse)request.GetResponse
())
{
    using (StreamReader reader = new StreamReader
(response.GetResponseStream()))
    {
        return reader.ReadToEnd();
    }
}

I don't doubt that it's a bug in the development platforms, but even
so it's a pretty common one.  It doesn't appear to happen to those
apps which just URLEncode the data and include it in the URL, but I
don't think that's exactly proper specification either :)


On Dec 24, 1:57 pm, Tom Morris <[email protected]> wrote:
> On Dec 24, 4:31 am, JakeS <[email protected]> wrote:
>
> > Looks like twitter is updating something and their servers are
> > returning error 417 for a lot of requests.  I looked into it and found
> > that .NET automatically includes an Expect header containing "100-
> > continue" on every request unless you specifically tell it not to.
>
> > So for any .NET devs having trouble, you can set
> > System.Net.ServicePointManager.Expect100Continue = false before making
> > your request to get past this issue.
>
> A lot of libraries follow this behaviour. A Twitter app I wrote in PHP
> a while back has been logging 417s most of today. I logged in and
> added:
> curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
>
> Other libcurl-based libraries may be affected. There are plenty of
> reports about 417 and Expect on the cURL website -http://curl.haxx.se/
> - and on the websites of particular language bindings.
>
> --
> Tom Morris (@tommorris)
> <http://tommorris.org>

Reply via email to