2017-07-20 222 views
2

我試圖將cURL轉換爲Python請求,但不起作用。將cURL轉換爲Python請求錯誤

捲曲: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錯誤

+0

你在cURL命令中指定的標誌怎麼樣?你爲什麼不把它們包含在你的python腳本中? –

+0

400錯誤的請求可能源於你的原始'payload'是無效的JSON。你的'curl'命令在JSON周圍有單引號('''),但是這些''bash'會將整個事件解釋爲單個參數。 – Kendas

+1

@AakashVerma'-k'是'--insecure',它與'verify = False'相同; '-v'是'--verbose'; '-H'是'--header'; '-d'是'--data' – Kendas

回答

2

使用json參數requests.post的JSON數據。它也照顧標題。

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

這似乎是工作,我得到的響應爲200.但我怎麼看到實際的輸出?當我運行curl時,我得到一個會話令牌作爲輸出,但是如何獲得Python請求? – Karthik

+0

只需打印它,即:'print(response.content)'或如果它是一個json響應使用:'print(response.json())' –

+0

謝謝!完美的作品。 – Karthik