2014-10-17 4 views
1

С плагином Firefox «HttpFox» я получаю запрос POST, который выглядит следующим образом:Отправка запроса JSON сообщение с питоном

{'json':'{"command":"SEARCH","data":{"someData":"someValue","otherData":"otherData"}}'} 

Теперь мне нужно отправить запрос HTTP построить с питоном, чтобы получить тот же данные, которые я получаю через браузер. Смотрите код:

headers = {'Content-type': 'application/json; charset=utf-8'} 
payload = ? 
req = requests.post(url, data=json.dumps(payload), headers = headers) 

Моей проблема: Я не уверен, как построить полезную нагрузку. Это также должен быть словарь, но он запутался из-за типа POST, который поставляется с HttpFox. В главном словаре есть два словаря.

Как я должен справиться с этим? Цените любую помощь.

+0

Внешний ключ '' json'', вероятно, * не * часть полезной нагрузки JSON. Недействительно JSON, например, поскольку он использует одинарные кавычки. Вы уверены, что это не просто показанное значение. –

ответ

0

Хорошо, я нашел решение:

Это было необходимо, чтобы построить Dict так:

valueString = """{"command":"SEARCH","data":{"someData":"someValue","otherData":"otherData"}}""" 
/// the """ ensures that the whole text between """ is handled as a string. 

payload = {'json': valueString} 

Ключ 'JSON' requieres строку. В этом случае строка выглядит как словарь.

Все.

+0

Теперь вы создали вложенную * строку * в своей полезной нагрузке JSON, а не вложенных объектах. –

+0

вы также можете определить 'values ​​= {" command ":" SEARCH "," data ": {" someData ":" someValue "," otherData ":" otherData "}}' и 'payload = {'json': json.dumps (значения) ' –

Смежные вопросы