无法使用请求包从REST http服务获取数据

时间:2018-02-02 14:32:33

标签: python web python-requests

这很好用,我可以返回数据:

r = urllib2.Request("http://myServer.com:12345/myAction")
data = json.dumps(q) #q is a python dict
r.add_data(data)
r=urllib2.urlopen(r)

但对请求包执行相同操作失败:

r=requests.get("http://myServer.com:12345/myAction", data=q)
r.text #This will return a message that says method is not allowed.

如果我将其作为发布请求,则有效:r=requests.post("http://myServer.com:12345/myAction", data=json.dumps(q))

但为什么?

2 个答案:

答案 0 :(得分:0)

设置会话

import session

session = requests.Session()
r = session.get("http://myServer.com:12345/myAction", data=q)
print r.content (<- or could us r.raw)

答案 1 :(得分:0)

根据urllib2.urlopen documentation

  

当提供数据参数时,HTTP请求将是POST而不是GET。

这样,r=urllib2.urlopen(r)也在发出POST请求。这就是为什么requests.get无法正常工作,requests.post无效。