Python調(diào)用Java接口失敗(Java日志打印警告:JSON parse error:xxxx)的解決方案
1. 場景描述
現(xiàn)有以下Java接口實(shí)現(xiàn):
@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轉(zhuǎn)換為TbInfoEntity對象
TbInfoEntity tie = JSONObject.parseObject(requestBody.toJSONString(), TbInfoEntity.class);
// 調(diào)用Mapper接口寫入數(shù)據(jù)庫
tieMapper.insert(tie);
return tie;
}
接口訪問地址為:
http://127.0.0.1:8089/test/addInfo
對應(yīng)的Python調(diào)用代碼如下:
import requests
import json
# 構(gòu)建請求數(shù)據(jù)
data = {
"userId":"001",
"userAge":"19",
"userAddr":"shanghai"
}
# 設(shè)置請求頭
headers = {
"Content-Type":"application/json",
"Accept":"application/json",
"username":"xiuheng",
"userGroup":"csdn"
}
url = "http://127.0.0.1:8089/test/addInfo"
# 調(diào)用接口
response = requests.post(url=url, json=data, headers=headers, timeout=30)
執(zhí)行后出現(xiàn)400錯誤,Java服務(wù)日志顯示JSON解析錯誤。
2. 問題分析
根據(jù)錯誤現(xiàn)象:
- Python端報400錯誤,提示請求參數(shù)問題
- Java服務(wù)日志顯示JSON解析失敗
- 主要關(guān)注請求參數(shù)中的data部分可能存在格式問題
初步判斷問題出在請求參數(shù)的傳遞方式上,嘗試修改參數(shù)傳遞方式。
3. 解決方案
修改Python調(diào)用代碼為以下形式:
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參數(shù)并手動序列化JSON
response = requests.post(url=url, data=json.dumps(data), headers=headers, timeout=30)
修改后調(diào)用成功,數(shù)據(jù)正常寫入數(shù)據(jù)庫。
4. 經(jīng)驗(yàn)總結(jié)
Python調(diào)用Java接口傳遞JSONObject類型數(shù)據(jù)時:
- 建議使用data參數(shù)而非json參數(shù)
- 必須使用json.dumps()對數(shù)據(jù)進(jìn)行序列化處理
- 這樣才能確保參數(shù)格式符合Java端JSON解析的要求
以上就是Python調(diào)用Java接口失敗(Java日志打印警告:JSON parse error:xxxx)的解決方案的詳細(xì)內(nèi)容,更多關(guān)于Python調(diào)用Java接口失敗的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python跑循環(huán)時內(nèi)存泄露的解決方法
這篇文章主要介紹了Python跑循環(huán)時內(nèi)存泄露的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Python multiprocessing 進(jìn)程間通信方式實(shí)現(xiàn)
本文主要介紹了Python multiprocessing 進(jìn)程間通信方式實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python 之pandas庫的安裝及庫安裝方法小結(jié)
Pandas 是一種開源的、易于使用的數(shù)據(jù)結(jié)構(gòu)和Python編程語言的數(shù)據(jù)分析工具,它與 Scikit-learn 兩個模塊幾乎提供了數(shù)據(jù)科學(xué)家所需的全部工具,今天通過本文給大家介紹Python 之pandas庫的安裝及庫安裝方法小結(jié),感興趣的朋友跟隨小編一起看看吧2022-11-11
python Django實(shí)戰(zhàn)之歌曲搜索功能實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何利用python Django實(shí)現(xiàn)歌曲搜索功能,文中的示例代碼講解詳細(xì),具有一定的參考價值,有需要的小伙伴開業(yè)了解下2023-10-10
Selenium(Python web測試工具)基本用法詳解
這篇文章主要介紹了Selenium(Python web測試工具)基本用法,結(jié)合實(shí)例形式分析了Selenium的基本安裝、簡單使用方法及相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
詳解Python數(shù)據(jù)分析--Pandas知識點(diǎn)
這篇文章主要介紹了Python數(shù)據(jù)分析--Pandas知識點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
python 工具 字符串轉(zhuǎn)numpy浮點(diǎn)數(shù)組的實(shí)現(xiàn)
這篇文章主要介紹了python 工具 字符串轉(zhuǎn)numpy浮點(diǎn)數(shù)組的實(shí)現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python突破多線程限制GIL問題的4種實(shí)戰(zhàn)解法
GIL(全局解釋器鎖)是CPython解釋器的核心特性,其本質(zhì)是“同一時刻僅允許一個線程執(zhí)行Python字節(jié)碼”,這直接導(dǎo)致Python多線程在CPU密集型任務(wù)中無法利用多核優(yōu)勢,本文整理了4種實(shí)戰(zhàn)解法,大家可以根據(jù)需要進(jìn)行選擇2025-12-12

