使用POST请求携带安全密钥调用API时遇HTTP 400错误求助
POST请求带安全密钥返回HTTP 400错误的排查与修复
问题场景
通过POST方法调用产品数据接口,请求头中传递安全密钥,但返回HTTP 400错误,相关代码如下:
def api(request): headers={'content-type':'application/json','security-key': 'valu-key'} url = 'http://api-content/product/GetProduct' x = requests.post(url, headers = headers) content=x.status_code return HttpResponse(content)
可能的原因及修复方案
缺少请求体(Payload)
多数POST接口要求携带JSON格式的请求体,即使接口无参数,也需要传递空的JSON对象。当前代码仅传递请求头,未提交请求体,会触发服务器的参数校验错误。
修复示例:def api(request): headers={'content-type':'application/json','security-key': 'valu-key'} url = 'http://api-content/product/GetProduct' # 根据接口需求构造请求体,无参数则传空对象 payload = {} x = requests.post(url, headers=headers, json=payload) content = x.status_code return HttpResponse(content)安全密钥错误
检查valu-key是否为接口要求的有效密钥,注意拼写、大小写是否匹配,部分接口要求密钥需经过Base64等编码处理。
修复:确认密钥正确性,按接口文档要求处理后再放入请求头。接口地址错误
核对http://api-content/product/GetProduct是否为正确的接口地址,检查协议(HTTP/HTTPS)、路径拼写是否有误。
修复:替换为接口文档中提供的正确URL。请求头字段不匹配
确认security-key是否为接口指定的头字段名,部分接口会使用X-Security-Key或Security-Key等命名;同时若未传递JSON请求体,content-type设置为application/json可能引发服务器校验错误。
修复:对照接口文档修正请求头字段名,若无需JSON请求体,可移除content-type或改为接口要求的格式。
内容的提问来源于stack exchange,提问作者TodorossHack
相关产品推荐
相关产品推荐

