使用Python发起HTTP POST请求时如何发送字符串数组类型参数
问题排查与解决方案
核心问题定位
你遇到的报错本质是提交的计量点ID不符合服务端校验规则,可按以下优先级排查遗漏项:
- 优先确认计量点ID本身的合法性:该服务要求计量点ID为18位纯数字字符串,你测试使用的
1234本身就不符合格式要求,哪怕参数结构完全正确也会触发报错,请替换为真实有效的18位计量点ID再测试。 - 确认参数结构正确性:接口要求
meteringPointIds为字符串数组,当你使用JSON格式提交请求时,正确写法为:
# meteringPointId为18位字符串类型的有效计量点ID postData = {'meteringPointIds': [meteringPointId]} r = requests.post(url + path, headers=headers, json=postData)
你之前尝试的postData = {'meteringPointIds': ['1234']}本身结构是符合要求的,问题出在ID值无效。
- 确认请求头配置:
- 检查是否正确添加了认证头(如Bearer Token),该服务所有接口都需要身份认证才能正常访问
- 确认
Content-Type头与提交方式匹配:如果用json参数提交,头应为application/json;如果接口要求表单格式提交,需改为application/x-www-form-urlencoded,同时用data参数代替json参数提交,部分服务端解析表单数组需要参数名加后缀[],即postData = {'meteringPointIds[]': [meteringPointId]}
- 确认请求路径正确性:检查拼接的请求路径是否和文档一致,是否遗漏了版本前缀、接口前缀等固定路径片段。
#20013: No meteringpoints in request conforms to valid meteringpoint format.
上述报错的触发优先级是先校验ID值格式,再校验参数结构,所以优先确认ID本身的有效性。
内容的提问来源于stack exchange,提问作者OZ1SEJ
相关产品推荐
相关产品推荐

