我的字符串如下:
{
'singleQuesResponses': {
'28': '',
'14': '',
'27': '',
'26': ''
},
'org_apache_struts_taglib_html_TOKEN': 'a1553f25303435076412b5ca7299b936',
'quesResponses': {
'some': 'data'
}
}
当我在pyhton请求中发布它时,如:
data = json.loads(data)
page = requests.post('http://localhost/chilivery/index.php', data=data, cookies=bcookies)
然后评价该帖子是这样的:
array(3) { ["quesResponses"]=> string(4) "some" ["singleQuesResponses"]=> string(2) "14" ["org_apache_struts_taglib_html_TOKEN"]=> string(32) "a1553f25303435076412b5ca7299b936" }
但我希望:
array(3) { ["quesResponses"]=> array["some"=>'data'] ["singleQuesResponses"]=> string(2) "14" ["org_apache_struts_taglib_html_TOKEN"]=> string(32) "a1553f25303435076412b5ca7299b936" }
我的意思是为什么有些'是不是按值发送数组,并且它的唯一第一个键是作为字符串发送的?
答案 0 :(得分:0)
它应该如何运作。将数据参数设置为dict将使请求模块尝试使用以下命令发送它:
Content-Type: application/x-www-form-urlencoded
它只接受字典的第一级并在体内编码为x = data& y = other_data。
您应该使用json.dumps(data)对对象进行编码,或者直接将其分配给json参数。
requests.post(url, json=data)
这将Content-Type标头设置为application / json
OR
requests.post(url, data=json.dumps(data))
这不会设置Content-Type标题。
答案 1 :(得分:0)
在这种情况下,唯一的方法是使用Get
发送数据,而不是使用数据发布数据;你可以在请求模块中使用params。