网站博客自媒体轻松,培训班管理系统 免费,襄阳品牌网站建设,双语网站模板问题#xff1a;测试环境调用三方接口正常#xff0c;线上环境接口报错400。
排查#xff1a;两个方向#xff1a;1代码问题#xff0c;2线上ip没在三方控制后台加白名单。 首先postman模拟请求三方接口正常#xff0c;于是在postman生成curl指令。 curl --location --r…问题测试环境调用三方接口正常线上环境接口报错400。
排查两个方向1代码问题2线上ip没在三方控制后台加白名单。 首先postman模拟请求三方接口正常于是在postman生成curl指令。 curl --location --request POST https://miniapp.xxx.com/xxx/xxx/xxx/xxx/xxx \ --header content-type: application/json \ --header appId: 123456789 \ --header secretKey: 123456789abcdefghijklmn \ --header deviceid: 1234567 \ --header channelid: 1234567 \ --header accessToken: abcdefghijk123456789 在报错的线上机器执行可以执行成功证明不是ip白名单的问题。 那就是代码问题了。 在线上报错那台机器上写个脚本a.php,把自己那段代码贴过去一遍一遍去调试。最终发现加上这行代码curl_setopt($ch, CURLOPT_POSTFIELDS, {});就可以了即body为空时也需要显式的写这行代码。 原因线上php扩展curl的版本7.25.0测试版本7.46.0。 cURL 7.29.0 及之前的版本或HP 5.5.x 及之前的版本请求体为空且没有设置CURLOPT_POSTFIELDS可能会导致报错。请注意这只是针对较旧版本的cURL和PHP扩展的一般性指导。具体的版本和行为可能因操作系统、编译选项和其他因素而有所不同。具体可查阅相关文档或向PHP和cURL社区寻求支持。
解决加上这行代码curl_setopt($ch, CURLOPT_POSTFIELDS, {});