2017-07-20 14 views
2

cURLをPythonリクエストに変換しようとしていますが、機能しません。cURLをPythonリクエストに変換するエラー

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

私のPythonのリクエストコード:仕事と私は400不正な要求エラーを与えていない

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) 

私は私のいずれかに動作しません。次のコードを与える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) 

誰でも問題を特定できますか?

編集:私は、出力を生成する第二のスクリプトを編集した:JSONデータ用requests.postjsonパラメータを使用し

+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

500エラーを与えます。また、ヘッダーも処理します。

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

これは動作しているようですが、私は200という応答を得ています。しかし、実際の出力はどのように表示されますか?私がカールを実行すると、セッショントークンが出力として得られますが、どのようにしてPythonリクエストを取得できますか? – Karthik

+0

'print(response.content)'やjsonレスポンスの場合は、 'print(response.json())' –

+0

ありがとう!完璧に動作します。 – Karthik

関連する問題