目标系统貌似用 JAVA 开发了一个接口,需要我这边用 Python POST 过去一个 jsonArray 格式数据过去。
data = [
{
"test0":"0",
"test1":"1"
},
{
"test3":"3",
"test4":"4"
}
]
data_json = json.dumps(data)
这样 POST 过去后,提示不是 jsonArray 格式。 然后又简单变换了下,仍然不可以,求各位指导一下。
1
virusdefender 2016-04-08 00:06:10 +08:00 via Android
我觉得这样没错,最好让那边给个 demo
|
2
ethego 2016-04-08 00:07:13 +08:00
为什么不是?我在 chrome 的 console 里试了, dump 出来就是 array
|
3
pierre1994 OP @virusdefender 谢谢大神,明天再去咨询下
|
4
pierre1994 OP @ethego 我也觉得很奇怪
|
5
zonghua 2016-04-08 00:36:40 +08:00 via iPhone
是不是被转义了?刚才把 json 放到 url 参数上发现逗号转移成了\054
|
6
coolair 2016-04-08 02:06:40 +08:00 via Android
type(data_json)看下
|
7
janxin 2016-04-08 07:41:12 +08:00 via iPhone
content-type 设置了吗
|
9
pierre1994 OP @zonghua 有可能
|
10
pierre1994 OP @janxin 设置了
|
11
pierre1994 OP @gimp 有道理
|
12
BOYPT 2016-04-08 09:37:45 +08:00
对方可能是不 parse post body 的,直接取内容。
|
13
lovepython 2016-04-08 09:44:16 +08:00
完全没看出错,求大神指点
|
14
WangYanjie 2016-04-08 09:47:57 +08:00
你通过什么 post 过去的,注意 content_type 。
本质上你发过去的都是字符串, http 怎么理解要看你怎么说明 |
15
pierre1994 OP @WangYanjie 加了 content 了
|
16
peter999 2016-04-08 13:31:41 +08:00
没有问题,把你 post 的代码发下
|
17
fzinfz 2016-04-08 13:40:12 +08:00
不同程序交互貌似不带‘ s ’的 json.dump()比较合适
|
18
pierre1994 OP @peter999
headers = {'content-type': 'application/json'} r = requests.post(url, data= data_json, headers=headers ) print r.text 然后结果是:[{"desc":"input format error,must be JSONArray","state":"error"}] |
19
pierre1994 OP @coolair
额,是<type 'str'>哎 |
20
peter999 2016-04-10 21:24:55 +08:00
去掉 headers ,改成:
r = requests.post(url, data=data_json) |