我在使用 httplib 的 POST 时遇到问题。这是代码:
import base64
import urllib
import httplib
http = urllib3.PoolManager()
head = {"Authorization":"Basic %s" % base64.encodestring("foo:bar")}
fields = {"token":"088cfe772ce0b7760186fe4762843a11"}
conn = httplib.HTTPSConnection("foundation.iplantc.org")
conn.set_debuglevel(2)
conn.request('POST', '/auth-v1/renew', urllib.urlencode(fields), head)
print conn.getresponse().read()
conn.close()
出来的POST是正确的。我知道我开始了一个 telnet 会话并输入它工作正常。这里是:
'POST /auth-v1/renew HTTP/1.1\r\nHost: foundation.iplantc.org\r\nAccept-Encoding: identity\r\nContent-Length: 38\r\nAuthorization: Basic YXRlcnJlbDpvTnl12aesf==\n\r\n\r\ntoken=088cfe772ce0b7760186fe4762843a11'
但是当 python 脚本发送它时,来自服务器的响应是“找不到令牌”。顺便说一句,这确实适用于 urllib3(urllib2 显示相同的错误),它使用多部分编码,但我想知道上面有什么问题。我宁愿不依赖另一个 3rd 方包。