将cURL转换为Python请求错误

时间:2017-07-20 06:03:13

标签: python json python-3.x curl python-requests

我正在尝试将cURL转换为Python请求但不起作用。

cURL: curl -kv -H 'Content-Type: application/json' 'https://IP-address/api/v1/login' -d '{"username":"api", "password":"APIPassword"}'

我的Python请求代码:

import requests

url = "https://IP-address/api/v1/login"

payload = "'{\"username\":\"api\", \"password\":\"APIPassword\"}'"
headers = {
    'Content-Type': "application/json",
    'cache-control': "no-cache",
    }

response = requests.request("GET", url, headers=headers, data=payload, verify=False)

print(response.text)

哪个不起作用并且给我400个错误请求错误。

我尝试使用https://curl.trillworks.com/

进行转换

它给了我以下不起作用的代码。

import requests

url = 'https://IP-address/api/v1/login'

headers = {
    'Content-Type': 'application/json',
}

data = '{"username":"api", "password":"APIPassword"}'

output = requests.get(url, data=data, verify=False)

print (output)

有人可以帮我在这里找出问题。

编辑:我已经编辑了第二个脚本来产生输出:这给出了500错误

2 个答案:

答案 0 :(得分:2)

使用json中的requests.post参数获取json数据。它还负责标题。

data = {"username":"api", "password":"APIPassword"}
response = requests.post(url, json=data, verify=False)

答案 1 :(得分:0)

确保您在有效负载中发送有效JSON的另一种方法是使用json python库通过json.dumps()格式化有效负载,该函数会从字符串返回代表JSON对象的字符串。目的。当我需要在有效负载中发送嵌套的json对象时,这对我特别有用。

import json 
import requests

url = 'https://sample-url.com' 
headers = { 'Content-Type': 'application/json', 'Authorization': f'{auth_key}'}
payload =   {   "key": "value",
                "key": ["v1", "v2"],
                "key": {
                         "k": "v"
                        }
                ...
            }

r = requests.post(url, headers=headers, data=json.dumps(payload))