Python请求模块:验证和发布urlencoded信息

时间:2017-06-12 12:08:19

标签: python python-requests

我成功地能够对我的JSON信息进行urlencode,但是我无法发布我的urlencoded信息,因为我需要在发布时进行身份验证。

我该怎么做?

我的代码如下:

import urllib
import pycurl
import certifi
import json
import requests
from requests.auth import HTTPBasicAuth

requests.post('https://website.com/update/', auth=('user', 'pass'))

uri = 'https://website.com/update/'
params = {}
data= {"simId":760590802,"changeType":2,"targetValue":000307,"effectiveDate":'null'}
params["data"] = json.dumps(data)
r = requests.post(uri, data=params)
print r.text

如您所见,我可以发布我的信息。但在这样做之后,我需要在完全这样做之前对自己进行身份验证。

我浏览了请求模块身份验证页面,但这些身份验证方法都不起作用。这适用于pycurl,而我可以设置我的用户名和密码,那么我如何对请求模块做同样的事情呢?

2 个答案:

答案 0 :(得分:0)

由于您提到了用户名和密码,因此身份验证方法很可能是 HTTP基本身份验证,这可以通过@Test(expected = TransientDataAccessResourceException.class) public void readOnlyTransactionAttribute() { testUserService.getAll(); } 轻松完成,如下所示:

requests

答案 1 :(得分:0)

如果您的应用程序有某种前端,您已经可以使用浏览器访问,请尝试使用Chrome上的开发人员工具查看身份验证的执行方式(方法,参数)并尝试复制该文件。

之后您很可能会使用请求会话对象。这将帮助您只进行一次身份验证,而不是每次发出请求。

http://docs.python-requests.org/en/v1.0.4/user/advanced/#session-objects

打开一个新会话:

s = requests.Session()

使用会话进行身份验证;这只是一个示例,您可以执行您的身份验证,但您的应用程序支持(例如,发布请求)

s.auth = ('user', 'pass')

如果您有任何会话设置(Cookie,标题等),则必须将它们添加到您的会话中。

s.headers.update({'x-test': 'true'})