enj*_*joi 2 python curl python-requests
我正在尝试将以下cURL命令转换为Python中的Request.
curl -H 'customheader: value' -H 'customheader2: value' --data "Username=user&UserPassword=pass" https://thisismyurl
Run Code Online (Sandbox Code Playgroud)
据我所知,可以获取头文件和POST数据.那么我怎么做这两个像cURL?
这就是我正在尝试的:
url = 'myurl'
headers = {'customheader': 'value', 'customheader2': 'value'}
data = 'Username=user&UserPassword=pass'
requests.get(url, headers=headers, data=data)
Run Code Online (Sandbox Code Playgroud)
哪个回报: HTTPError: HTTP 405: Method Not Allowed
如果我使用帖子: MissingArgumentError: HTTP 400: Bad Request
使用--data命令行参数时,curl切换到POST请求.在Python中做同样的事情:
requests.post(url, headers=headers, data=data)
Run Code Online (Sandbox Code Playgroud)
从curl手册:
-d,--data <data>
(HTTP)将POST请求中的指定数据发送到HTTP服务器,就像用户填写HTML表单并按下提交按钮时浏览器一样.HTTP服务器,与用户填写HTML表单并按下提交按钮时浏览器的操作方式相同.这将导致curl使用content-type application/x-www-form-urlencoded将数据传递到服务器.
您可能需要相应地手动设置Content-Type标头,或者使用字典作为data参数(并requests为您编码正确的格式; Content-Type标题也为您设置):
url = 'myurl'
headers = {'customheader': 'value', 'customheader2': 'value'}
data = {'Username': 'user', 'UserPassword': 'pass'}
requests.post(url, headers=headers, data=data)
Run Code Online (Sandbox Code Playgroud)