python使用get和post方法_Python请求POST进行GET?

我正在使用Python 2.7.5,Django 1.7,请求2.4.1,并进行一些简单的测试.但是,似乎当我调用requests.post时,该方法正在执行GET.

我的代码,与RESTful API交谈.请注意,POST命令通过Hurl.it与此有效负载和端点一起工作:

def add_dummy_objective(self):

"""

To the bank

"""

payload = {

'displayName': {

'text': self._test_objective

},

'description': {

'text': 'For testing of API Middleman'

},

'genusTypeId': 'DEFAULT'

}

obj_url = self.host + self.bank_id + '/objectives/?proxyname=' + self._admin_key

req = requests.post(obj_url, data=json.dumps(payload), headers=self.headers)

return req.json()

我将标题设置为json:

self.headers = {

'Content-Type' : 'application/json'

}

我没有创建一个新目标(正如预期的那样使用POST),而是获得了目标列表(我对GET的期望).使用pdb,我看到:

(Pdb) req.request

(Pdb) req.request.method

'GET'

这怎么翻了?我之前使用过Python请求库没有任何问题,所以我不确定我是否遗漏了一些明显的东西或者是否(使用较新版本的Django / Requests)我必须设置另一个参数?这是一个缓存问题吗?任何调试技巧?我已经尝试重新安装请求,并将Django回滚到1.6.5,但没有任何作用……必须简单. – 谢谢!

======更新1 ========

只需合并Martijn在此提出的一些调试信息:

(Pdb) requests.post.__name__

'post'

进入requests / api.py> post()定义:

(Pdb) l

88 :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`.

89 :param \*\*kwargs: Optional arguments that ``request`` takes.

90 """

91 import pdb

92 pdb.set_trace()

93 -> return request('post', url, data=data, **kwargs)

深入研究request()方法:

(Pdb) method

'post'

(Pdb) l

43 >>> req = requests.request('GET', 'http://httpbin.org/get')

44

45 """

46 import pdb

47 pdb.set_trace()

48 -> session = sessions.Session()

49 return session.request(method=method, url=url, **kwargs)

在session.request中还有一个层:

(424)request()

-> method = builtin_str(method)

(Pdb) method

'post'

(Pdb) l

419 :param cert: (optional) if String, path to ssl client cert file (.pem).

420 If Tuple, ('cert', 'key') pair.

421 """

422 import pdb

423 pdb.set_trace()

424 -> method = builtin_str(method)

425

426 # Create the Request.

427 req = Request(

428 method = method.upper(),

429 url = url,

退到方法的最后,实际发出请求,我的“准备”是一个POST,但我的resp是一个GET:

(Pdb) prep

(Pdb) n

-> return resp

(Pdb) resp

(Pdb) resp.request

(Pdb) l

449 'allow_redirects': allow_redirects,

450 }

451 send_kwargs.update(settings)

452 resp = self.send(prep, **send_kwargs)

453

454 -> return resp

455

456 def get(self, url, **kwargs):

457 """Sends a GET request. Returns :class:`Response` object.

458

459 :param url: URL for the new :class:`Request` object.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值