Python调用TomTom Matrix Routing v2接口返回400错误如何解决?
问题原因
你收到MALFORMED_BODY错误的核心原因是POST请求的请求体格式和声明的Content-Type: application/json不匹配:
- 你在调用
requests.post()时使用data参数传递Python字典,requests会默认将字典序列化为表单格式(application/x-www-form-urlencoded),而非JSON格式,导致服务端无法解析请求体。
解决方法
直接将data参数替换为json参数即可,requests会自动完成字典到JSON字符串的序列化,同时自动匹配正确的请求头:
# 把原来的resp = requests.post(apiURL, data=post_params, headers=headers)替换为下面的代码 # 替换后可以删除手动设置的Content-Type头,requests会自动处理 resp = requests.post(apiURL, json=post_params)
如果需要手动控制序列化流程,也可以先自行转换字典为JSON字符串:
import json resp = requests.post(apiURL, data=json.dumps(post_params), headers=headers)
修改后重新请求即可正常获取接口返回结果。
内容的提问来源于stack exchange,提问作者Sandy B
相关产品推荐
相关产品推荐

