2017-02-02 5 views
0

запрос: (Пространства, предполагают, чтобы быть там)запросы питона отправлять запрос полезной нагрузки

{input01: {Input: "adress", adress: "g", FirstName: "", LastName: ""}, Locale: "en"} 
    Locale:"en" 
input01:{Input: "adress", adress: "g", FirstName: "", LastName: ""} 
    FirstName:"" 
    adress:"g" 
    Input:"adress" 
    LastName:" 

Это моя попытка (которая возвращает 400).

data = { 
     "input01": { 
     "Input": "adress", 
     "adress": "test", 
     "FirstName": "", 
     "LastName": "" 
     }, 
     "Locale": "en" 
    } 

r = requests.post(url, data=data) 
print(str(r.text)) 
+0

В общем 400 означает плохой запрос т.е. вам не хватает какой-то данные, которые должны быть размещены в ссылке. Проверьте URL-адрес и данные для публикации. – MicroPyramid

+0

Вы не можете публиковать вложенный словарь. «Значение» для 'input01' будет преобразовано в строку, содержащую синтаксис словаря Python. Вы хотели разместить JSON вместо этого? Затем используйте 'request.post (url, json = data)'. –

+0

Несвязанный, к ответу, но «адрес» меня беспокоит. Я не могу не заметить, что это неправильно, что отвлекает меня от фактического чтения того, что есть. Использование '' address '' сделает ваш код более читаемым. – Baldrickk

ответ

2

Вы не размещаете JSON. Когда вы передаете словарь в аргумент data, он будет закодирован вместо запроса application/x-www-form-urlencoded, по умолчанию для HTML-форм.

Чтобы разместить JSON, используйте json параметр:

r = requests.post(url, json=data)