Python和Requests模块,正确的有效负载语法和#39;在url编码的POST方法中

时间:2015-10-21 12:47:15

标签: python-3.x post python-requests

我正在使用Requests模块和Python 3。 当我在Chrome中检查时,如果解析的表单数据列为:

   list_class_values[notice][zipstate]:
   list_class_values[notice][type][]:
   list_class_values[notice][keywords]:colorado 

在上述情况下,我正在寻找科罗拉多州的#39;。 在'有效载荷中列出它们的正确语法是什么?部分,给出下面的代码片段? 内容类型是" application / x-www-form-urlencoded"。

payload = {"list_class_values[notice][zipstate]":"None", "list_class_values[notice][type][]":"None", "list_class_values[notice][keywords]":"colorado"}
r = requests.post(url='http://www.example.com', payload=payload, headers=headers)
print(r.content)

我在某处需要一个元组吗?例如" list_class_values(通知,关键词)":"科罗拉多" ? 因为我更改关键字时数据没有变化..

1 个答案:

答案 0 :(得分:1)

我认为这是其他领域的问题。它们的值是空字符串,而不是字符串"None"

payload = {
    "list_class_values[notice][zipstate]": "",
    "list_class_values[notice][type][]": "",
    "list_class_values[notice][keywords]": "colorado"
}

表单字段名称是正确的;语法是Ruby on Rails和PHP使用的约定,但不是标准。支持语法的服务器将密钥解析为数组映射(Python术语中的字典)。见Form input field names containing square brackets like field[index]

请注意,您需要将此传递给POST正文的data参数(没有payload关键字参数,您应该得到异常):

r = requests.post(url='http://www.example.com', data=payload, headers=headers)