DHL电商API集成时PHP CURL请求返回空报405错误如何解决
排查解决建议
- 修复请求方法错误(对应405报错核心原因)
DHL ECommerce V2 版本的面单生成接口默认仅支持PUT请求方法,你当前代码使用的POST方法不被接口允许,替换请求方法配置即可:
将原代码中curl_setopt($ch, CURLOPT_POST, 1);替换为:
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
- 补全Basic认证配置
响应头中返回WWW-Authenticate: Basic标识说明接口要求HTTP Basic认证,你代码中已经传入了$userId和$password参数,但没有配置到CURL中,添加以下配置:
curl_setopt($ch, CURLOPT_USERPWD, $userId . ":" . $password);
- 优化请求头避免多余100 Continue响应
你看到的HTTP/1.1 100 Continue是CURL发送大体积JSON时的正常前置响应,可在请求头中添加Expect:字段跳过该逻辑,避免多余响应头干扰结果解析,修改后的请求头数组如下:
$headers = array( 'Accept: application/json', 'Content-Type: application/json', 'Expect:' );
- 修复代码冗余问题
你函数内硬编码覆盖了传入的$url参数,调试阶段可保留该写法,上线前请根据环境切换对应正式/沙箱地址;同时核对官方文档的认证规则,不要同时使用Basic认证和请求体内的accessToken,避免出现认证冲突。 - 修正请求体非法参数
你请求体中包裹的width字段值为0.0,不符合物流接口的包裹参数要求,需修改为大于0的实际包裹宽度数值,避免后续接口返回参数校验错误。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

