我正在尝试将以下cURL命令转换为Python中的Request。
curl -H 'customheader: value' -H 'customheader2: value' --data "Username=user&UserPassword=pass" https://thisismyurl
根据我的理解,可以获取标头和POST数据。那么我怎么做这两个像cURL?
这就是我正在尝试的:
url = 'myurl'
headers = {'customheader': 'value', 'customheader2': 'value'}
data = 'Username=user&UserPassword=pass'
requests.get(url, headers=headers, data=data)
返回:HTTPError: HTTP 405: Method Not Allowed
如果我使用帖子:MissingArgumentError: HTTP 400: Bad Request
答案 0 :(得分:7)
使用--data
命令行参数时,curl
会切换到POST
请求。在Python中做同样的事情:
requests.post(url, headers=headers, data=data)
来自curl
manual:
-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)