2016-09-26 6 views
3

Я не могу успешно преобразовать и выполнить команду curl post для кода python.Convert CURL Post to Python Requests Failed

локон команда

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

Если вы используете один из последних версий запросов: Попробуйте использовать «JSon» kwarg (нет необходимости конвертировать в JSon явно) вместо kwarg «данных»:

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/