2016-09-26 13 views
3

pythonコードにcurl postコマンドを変換して実行することができません。CURL Post to Python要求に失敗する

私はシェルから手動で実行したとき、私はそれが正常に動作しますが、私は、コードを実行すると、何も起こらない、見返りに応答がないcurlコマンド

curl -X POST -H "Content-Type:application/json; charset=UTF-8" -d '{"name":joe, "type":22, "summary":"Test"}' http://url 

変換されたコード

import requests 
import json 

url="http://url" 
data = {"name":joe, "type":22, "summary":"Test"} 
headers = {'Content-type': "application/json; charset=utf8"} 
response = requests.post (url, data=json.dumps(data), headers=headers) 
print response.text 
print response.headers 

、私はエラーや何かが表示されません。

+0

はい、私は疑問にこれを追加しました。何も戻ってこない、その空いている –

+0

あなたのコードを修正して実行させる。私は次のURLで正常に応答を得ました。 http://httpbin.org/post この望ましくない動作をしながら、可能な限り短いようにサンプルコードを変更することをお勧めします。 また、何もしなくても実行できることを確認してください(インポートを追加し、joe変数を削除してください) これは、問題がどこにないかを確認するのに役立ちます。 –

+0

よろしくお願いします。問題を特定できましたか? –

答えて

0

あなたがリクエストの最新バージョンのいずれかを使用している場合: 代わりに「データ」kwargの「JSON」kwarg(明示的にJSONに変換する必要はありません)を使用してみてください:

response = requests.post(url, json=data, headers=headers) 

注:また、この方法で 'Content-type'ヘッダーを省略することができます。

1

あなたの環境でプロキシが設定されている場合は、セッション/リクエストでもプロキシを定義します。セッションで例えば

my_proxies = { 
'http': 'http://myproxy:8080', 
'https': 'https://myproxy:8080' 
} 

session = requests.Session() 
request = requests.Request('POST', 'http://my.domain.com', data=params_template, headers=req_headers, proxies=my_proxies) 
prepped = session.prepare_request(request) 
response = session.send(prepped) 

参照ドキュメント:
要求
セッションhttp://docs.python-requests.org/en/master/user/advanced/

関連する問題