这是我的代码:

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/

10-13 04:56