如何将Sendle API curl调用转为PHP代码 配置-u、-H的curl_setopt
命令行curl参数与PHP cURL配置的对应逻辑
-u sendleID:APIKey是curl内置的HTTP Basic身份认证参数,对应curl_setopt()的CURLOPT_USERPWD配置项,直接传账号:密钥格式的字符串即可,不需要手动拼接认证头。-H "请求头内容"是自定义HTTP请求头参数,对应curl_setopt()的CURLOPT_HTTPHEADER配置项,传数组,每个数组元素对应一条完整的请求头字符串,和命令行里-H传的内容保持一致即可。- 因为目标接口是HTTPS地址,且需要拿到接口返回值做后续处理,必须加上
CURLOPT_RETURNTRANSFER = true的配置,不然curl会直接把响应打印到屏幕,没法获取返回内容做判断,和命令行的输出逻辑保持一致。
可直接运行的转换后代码
// 初始化cURL实例,指向Sendle的ping测试接口 $ch = curl_init("https://api.sendle.com/api/ping"); // 对应原curl命令的-u认证配置,替换成自己的账号和密钥 curl_setopt($ch, CURLOPT_USERPWD, "你的sendleID:你的APIKey"); // 对应原curl命令的两个-H请求头配置 curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/json", "Accept: application/json" ]); // 配置返回模式:把接口响应作为字符串返回,不直接输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 执行请求 $response = curl_exec($ch); $errMsg = curl_error($ch); // 释放cURL资源 curl_close($ch); // 结果处理 if ($errMsg) { echo "请求失败:" . $errMsg; } else { echo "接口返回:" . $response; }
踩坑提示:千万别手动把Basic Auth的账号密码编码后拼到请求头里传,用原生的
CURLOPT_USERPWD生成的认证头和命令行curl的逻辑完全一致,不会因为Base64编码的空格、格式问题导致401认证失败。如果本地开发时遇到SSL证书校验报错,可以临时加curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);跳过校验,生产环境一定要配置正确的CA证书链,不要长期关闭校验。
内容的提问来源于stack exchange,提问作者Bradmage
相关产品推荐
相关产品推荐

