我在使用 twisted.web.client.Agent 时遇到了一些问题......
我认为我的帖子请求中的字符串数据格式不正确。我正在尝试做一些类似于这个同步代码的事情:
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 响应(空 JSON 字符串),我开始怀疑 POST 请求中的 id 没有正确编码,但我不确定我能做些什么。将 urlencode 与 Agent.request 调用一起使用是否有效?我应该用另一种方式对这些东西进行编码吗?
编辑: 一些 IRC 家伙建议问题可能源于我没有发送标头信息,表明数据是在 url 字符串中编码的。我对这类东西知之甚少......有人能指出我正确的方向吗?