python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python调用Java接口失败

Python调用Java接口失败(Java日志打印警告:JSON parse error:xxxx)的解决方案

作者:岫珩

文章描述了Python调用Java接口时遇到400错误和JSON解析错误的问题,通过分析问题发现参数传递方式可能存在问题,修改Python代码使用data参数并序列化数据后,问题解决,文章总结了在Python调用Java接口传递JSONObject数据时的注意事项,需要的朋友可以参考下

1. 场景描述

现有以下Java接口实现:

@RequestMapping(value="addInfo", method=RequestMethod.POST, produces=MediaType.APPLICATION_JSON_VALUE)
public TbInfoEntity addInfo(@RequestHeader("userGroup")String userGroup,
    @RequestHeader("username")String username,
    @RequestBody JSONObject requestBody
){
    // 将JSONObject转换为TbInfoEntity对象
    TbInfoEntity tie = JSONObject.parseObject(requestBody.toJSONString(), TbInfoEntity.class);
    // 调用Mapper接口写入数据库
    tieMapper.insert(tie);
    return tie;
}

接口访问地址为:

http://127.0.0.1:8089/test/addInfo

对应的Python调用代码如下:

import requests
import json

# 构建请求数据
data = {
    "userId":"001",
    "userAge":"19",
    "userAddr":"shanghai"
}

# 设置请求头
headers = {
    "Content-Type":"application/json",
    "Accept":"application/json",
    "username":"xiuheng",
    "userGroup":"csdn"
}

url = "http://127.0.0.1:8089/test/addInfo"
# 调用接口
response = requests.post(url=url, json=data, headers=headers, timeout=30)

执行后出现400错误,Java服务日志显示JSON解析错误。

2. 问题分析

根据错误现象:

初步判断问题出在请求参数的传递方式上,尝试修改参数传递方式。

3. 解决方案

修改Python调用代码为以下形式:

import requests
import json

data = {
    "userId":"001",
    "userAge":"19",
    "userAddr":"shanghai"
}

headers = {
    "Content-Type":"application/json",
    "Accept":"application/json",
    "username":"xiuheng",
    "userGroup":"csdn"
}

url = "http://127.0.0.1:8089/test/addInfo"
# 使用data参数并手动序列化JSON
response = requests.post(url=url, data=json.dumps(data), headers=headers, timeout=30)

修改后调用成功,数据正常写入数据库。

4. 经验总结

Python调用Java接口传递JSONObject类型数据时:

以上就是Python调用Java接口失败(Java日志打印警告:JSON parse error:xxxx)的解决方案的详细内容,更多关于Python调用Java接口失败的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文