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