私はtwisted.web.client.Agentに問題があります...
POSTリクエストの文字列データが正しくフォーマットされていないと思います。私はこの同期コードに類似した何かをしようとしています:
from urllib import urlencode
import urllib2
page = 'http://example.com/'
id_string = 'this:is,my:id:string'
req = urllib2.Request(page, data=urlencode({'id': id_string})) # urlencode call returns 'id=this%3Ais%2Cmy%3Aid%3Astring'
resp = urllib2.urlopen(req)
現在、エージェントリクエストを作成する方法は次のとおりです。
from urllib import urlencode
from StringIO import StringIO
page = 'http://example.com/'
id_string = 'my:id_string'
head = {'User-Agent': ['user agent goes here']}
data = urlencode({'id': id_string})
request = agent.request('POST', page, Headers(head), FileBodyProducer(StringIO(data)))
request.addCallback(foo)
私が受け取っているHTTP応答(null JSON文字列)のために、IDがPOSTリクエストで適切にエンコードされていないのではないかと疑うようになりましたが、それに対して何ができるかわかりません。Agent.request呼び出しでurlencodeを使用することは有効ですか?これらのものをエンコードする別の方法はありますか?
編集:ある種のIRCの人たちは、データがURL文字列にエンコードされていることを示すヘッダー情報を送信しなかったという事実から問題が発生する可能性があると示唆しています。私はこの種のことについてほとんど知りません...誰かが私を正しい方向に向けることができますか?