这是我的代码:
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
opener.add_data(json_data) #runtime error on this line
r = None
try:
r = opener.open(config.get_url())
except urllib2.HTTPError as e:
print "..."
我得到一个运行时错误:opener.add_data(get_json)
attributeerror:openerdirector实例没有“add_data”属性
如何将请求json数据添加到此请求?
最佳答案
将其作为open
方法的参数(首先需要对其进行url编码):
import urllib
try:
r = opener.open(config.get_url(), data=urllib.urlencode(json_data))
except urllib2.HTTPError as e:
print "..."
参见开放式方法的documentation:
OpenerDirector.open(url[, data][, timeout])
打开给定的url(可以是请求对象或字符串),可选地传递给定的数据。
您可以通过注意
opener
是一个urllib2.OpenDirector
实例来查找文档:>>> opener
<urllib2.OpenerDirector instance at 0x1011acef0>
或者通过执行
help(opener)
,显示:class OpenerDirector
| Methods defined here:
|
| __init__(self)
|
| add_handler(self, handler)
|
| close(self)
|
| error(self, proto, *args)
|
| open(self, fullurl, data=None, timeout=<object object>)
关于python - 如何向HTTP请求添加数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17837143/