У меня есть вопрос. можно ли добавить несколько элементов в заголовок ... например, тип контента и идентификатор клиента ... @jdi
Омар Джандали
@OmarJandali, просто позвоните еще add_header()раз для каждого заголовка, который хотите добавить.
jdi 05
У меня есть следующий код, но он ничего не печатает. предполагалось напечатать URL-адрес и заголовки, но ничего не было напечатано ... req = urllib.Request('http://uat-api.synapsefi.com') req.add_header('X-SP-GATEWAY', 'client_id_asdfeavea561va9685e1gre5ara|client_secret_4651av5sa1edgvawegv1a6we1v5a6s51gv') req.add_header('X-SP-USER-IP', '127.0.0.1') req.add_header('X-SP-USER', '| ge85a41v8e16v1a618gea164g65') req.add_header('Content-Type', 'application/json') print(req)...
Омар Джандали
urllib2 не был распознан, поэтому я просто использовал urllib. Я также получаю сообщение об ошибке с запросом. The view tab.views.profileSetup didn't return an HttpResponse object. It returned None instead. @jdi
Омар Джандали
@OmarJandali, имейте в виду, что этот ответ был первоначально дан в 2012 году под python 2.x. Вы используете Python3, поэтому импорт будет другим. Было бы сейчас import urllib.requestи urllib.request.Request(). Кроме того, печать объекта req ничего интересного не делает. Вы можете ясно видеть, что заголовки были добавлены при печати req.headers. Кроме того, я не понимаю, почему это не работает в вашем приложении.
jdi 05
114
Рекомендую использовать невероятный requestsмодуль.
В пакете последних запросов вы можете использовать jsonпараметр в requests.post()методе для отправки json dict, а для Content-Typeзаголовка in будет установлено значение application/json. Нет необходимости явно указывать заголовок.
Обратите внимание, что это приведет к POSTed json с одинарными кавычками, что технически недействительно.
Джетро,
@Jethro Наблюдали ли вы ошибки при использовании одинарных кавычек? В Python допустимо использовать одинарные кавычки. Лично я не встречал никаких проблем по этому поводу.
jdhao
Извините, я ошибся, я думал, что мой сервер получает JSON в одинарных кавычках, но оказалось, что это отдельная проблема и некоторая вводящая в заблуждение отладка. Ура, это намного аккуратнее, чем указывать заголовок вручную!
Джетро,
0
Это отлично работает для меня с apis
import requests
data={'Id':id ,'name': name}
r = requests.post( url ='https://apiurllink', data = data)
Ответы:
Если ваш сервер ожидает, что запрос POST будет json, вам нужно будет добавить заголовок, а также сериализовать данные для вашего запроса ...
Python 2.x
Python 3.x
https://stackoverflow.com/a/26876308/496445
Если вы не укажете заголовок, это будет
application/x-www-form-urlencoded
тип по умолчанию .источник
add_header()
раз для каждого заголовка, который хотите добавить.req = urllib.Request('http://uat-api.synapsefi.com') req.add_header('X-SP-GATEWAY', 'client_id_asdfeavea561va9685e1gre5ara|client_secret_4651av5sa1edgvawegv1a6we1v5a6s51gv') req.add_header('X-SP-USER-IP', '127.0.0.1') req.add_header('X-SP-USER', '| ge85a41v8e16v1a618gea164g65') req.add_header('Content-Type', 'application/json') print(req)
...The view tab.views.profileSetup didn't return an HttpResponse object. It returned None instead.
@jdiimport urllib.request
иurllib.request.Request()
. Кроме того, печать объекта req ничего интересного не делает. Вы можете ясно видеть, что заголовки были добавлены при печатиreq.headers
. Кроме того, я не понимаю, почему это не работает в вашем приложении.Рекомендую использовать невероятный
requests
модуль.http://docs.python-requests.org/en/v0.10.7/user/quickstart/#custom-headers
источник
TypeError: post() takes from 1 to 2 positional arguments but 3 were given
для python 3.4.2 я обнаружил, что будет работать следующее:
источник
Это идеально подходит
Python 3.5
, если URL-адрес содержит значение строки запроса / параметра,URL запроса = https://bah2.com/ws/rest/v1/concept/
Значение параметра = 21f6bb43-98a1-419d-8f0c-8133669e40ca
источник
Вам нужно добавить заголовок, иначе вы получите ошибку http 400. Код хорошо работает на python2.6, centos5.4
код:
источник
Вот пример того, как использовать объект urllib.request из стандартной библиотеки Python.
источник
В пакете последних запросов вы можете использовать
json
параметр вrequests.post()
методе для отправки json dict, а дляContent-Type
заголовка in будет установлено значениеapplication/json
. Нет необходимости явно указывать заголовок.источник
Это отлично работает для меня с apis
источник