Ответ 1
params
для параметров URL в стиле GET, data
для информации о теле в стиле POST. Вполне законно предоставлять оба типа информации в запросе, и ваш запрос делает это тоже, но вы уже закодировали параметры URL в URL.
Ваш необработанный пост содержит данные JSON. requests
могут обрабатывать JSON-кодировку для вас, и он также установит правильный Content-Header
; все, что вам нужно сделать, это передать объект Python, который будет закодирован как JSON, в аргумент ключевого слова json
.
Вы также можете выделить параметры URL:
params = {'sessionKey': '9ebbd0b25760557393a43064a92bae539d962103', 'format': 'xml', 'platformId': 1}
затем опубликуйте свои данные с помощью:
import requests
url = 'http://192.168.3.45:8080/api/v2/event/log'
data = {"eventType": "AAS_PORTAL_START", "data": {"uid": "hfe3hf45huf33545", "aid": "1", "vid": "1"}}
params = {'sessionKey': '9ebbd0b25760557393a43064a92bae539d962103', 'format': 'xml', 'platformId': 1}
requests.post(url, params=params, json=data)
Ключевое слово json
является новым в requests
версии 2.4.2; если вам все еще нужно использовать более старую версию, закодируйте JSON вручную с помощью модуля json
и json
закодированный результат как ключ data
; вам придется явно установить заголовок Content-Type в этом случае:
import requests
import json
headers = {'content-type': 'application/json'}
url = 'http://192.168.3.45:8080/api/v2/event/log'
data = {"eventType": "AAS_PORTAL_START", "data": {"uid": "hfe3hf45huf33545", "aid": "1", "vid": "1"}}
params = {'sessionKey': '9ebbd0b25760557393a43064a92bae539d962103', 'format': 'xml', 'platformId': 1}
requests.post(url, params=params, data=json.dumps(data), headers=headers)