Python urlencode不会使用数组对值进行编码

时间:2017-08-27 03:52:07

标签: php python arrays

我使用以下命令在我的PHP文件中创建post变量:

test=urllib2.urlopen(urllib2.Request('php.php',urllib.urlencode({'test':[1,2,3,4,5]}))).read()
print test

我希望在$_POST文件中创建一个php.php,它是一个变量和数组的数组。

php.php:

print_r($_POST['test']);
echo is_array($_POST['test'])?"YES! THIS IS AN ARRAY":"NO! THIS IS A STRING";

不幸的是,它最远的是创建一个数组的'字符串'表示。

enter image description here

我尝试将urlencode param设置为True,就像我在类似问题中看到的建议一样:

urlencode({'test':[1,2,3,4,5]},True)

enter image description here

我也尝试使用Python requests.post并获得了类似的结果。

但正如您所看到的,它只输出数组中的最后一个数字。有没有办法在Python脚本中解决这个问题?

1 个答案:

答案 0 :(得分:1)

我找到了答案,这很简单。

只需将{'test':[1,2,3,4,5]}密钥更改为{'test[]':[1,2,3,4,5]}

即可

请注意我添加[]

的方式

确保参数中有True

response=urllib2.urlopen(URL,urllib2.Request(urlencode({'test[]':[1,2,3,4,5]},True)))

如果您使用的是request.post方法:

response=requests.post(URL,data={'test[]':[1,2,3,4,5]})