(ひょっとしたら出来るのかもしれませんが、調べた範囲ではわからず)
そこでThriftのTHttpClientクラスのPython実装をプロキシに対応させるべくチャレンジしてみました。
http://gist.github.com/204501
基本的には元々httplib.HTTPで実装されていたところをhttplib.HTTPConnectionに変えただけなのですが、ところがこれがうまくいかない。このクライアントで/edam/user/にCheckVersionリクエストを投げると500エラーが返却されてしまいます。で、500エラーを拾うと再度試行するようになっているのか、あえなく無限ループに突入><
プロキシの設定が間違っているのかと思い、試しにプロキシを外してデバッグログをはかせた結果がこちら。
send: 'POST /edam/user HTTP/1.1\r\nHost: sandbox.evernote.com:443\r\nAccept-Encoding: identity\r\nHost: sandbox.evernote.com\r\nContent-Type: application/x-thrift\r\nContent-Length: 82\r\n\r\n' send: '\x80\x01\x00\x01\x00\x00\x00\x0ccheckVersion\x00\x00\x00\x00\x0b\x00\x01\x00\x00\x00(Python URL to Evernote/0.1; Python/2.5.2\x06\x00\x02\x00\x01\x06\x00\x03\x00\r\x00' debug: HTTPConnection Request-sent None reply: 'HTTP/1.1 200 OK\r\n' header: Server: Apache-Coyote/1.1 header: Content-Type: application/x-thrift header: Content-Length: 29 header: Date: Wed, 07 Oct 2009 09:04:29 GMT read start read POST request send: 'POST /edam/user HTTP/1.1\r\nHost: sandbox.evernote.com:443\r\nAccept-Encoding: identity\r\n\r\n' read getresponse debug: HTTPConnection Request-sent None reply: 'HTTP/1.1 500 \r\n' header: Server: Apache-Coyote/1.1 header: ETag: W/"3401-1254794526000" header: Last-Modified: Tue, 06 Oct 2009 02:02:06 GMT header: Content-Type: text/html header: Content-Length: 3401 header: Date: Wed, 07 Oct 2009 09:04:29 GMT header: Connection: close read start read POST requestうーん、HTTPSの実装が間違っているのか、リクエストパラメータが間違っているのか。1回目のリクエストはうまくいくけど2回目のリクエストが失敗しがちみたいです。もう少し調査してみます。
あ!今気づいた!!
2回目のリクエスト時(readメソッド実行時)のHTTPヘッダがめちゃくちゃだ!!ここを直せば動くかも。