2014-10-17 122 views
1

随着Firefox插件“是HttpFox”我越来越POST请求,看起来像这样:JSON发送POST请求与蟒蛇

{'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,因为它使用单引号。你确定它不只是显示的价值。 – 2014-10-17 10:08:26

回答

0

好吧,我找到了解决办法:

有必要建立一个字典是这样的:

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有效内容中创建了嵌套*字符串*,而不是嵌套对象。 – 2014-10-17 10:07:33

+0

你也可以定义'values = {“command”:“SEARCH”,“data”:{“someData”:“someValue”,“otherData”:“otherData”}}'payload = {'json': json.dumps(值)' – 2014-10-17 14:22:14