HTTP 100-continue とは
POST 時にサーバがデータを受け入れ可能か確認するための一時応答。
クライアント→サーバに送る HTTP リクエストヘッダ に Except: 100-continue が含まれていて、なおかつサーバが対応していれば使用可能。
その場合、クライアントはまず POST で Except: 100-continue 入りのリクエストヘッダを送り、100 応答が返ってきてからボディを送ることになる。
100 を使った場合は次のようなシーケンスになる
Client ---( POST + HTTP Request Header )--> Server Client <--( HTTP/1.1 100 Continue ) --- Server Client ---( Body ) --> Server Client <--( HTTP/1.1 200 OK など ) --- Server
使わない場合はこう
Client ---( POST + HTTP Request Header + Body )--> Server Client <--( HTTP/1.1 200 OK など ) --- Server
サーバが対応していなければ 417 Expectation Failed のようなエラーが返る。
で、
Android やら .net framework のライブラリがデフォルトで 100 を使う設定な一方、Twitter が対応していなかったのでこれに引っかかった人多数。
Twitter 相手に POST するときは無効にしておきましょう。
PHP http://www.escafrace.co.jp/blog/09/10/16/1008
C# http://d.hatena.ne.jp/nojima718/20100129/1264792636
Android http://togetter.com/li/22794