PHP CURL短信API无响应问题求助
我来帮你排查调用Textlocal短信API无响应的问题,咱们一步步拆解:
核心修复与排查方案
1. 先补全缺失的CURL关键代码
你的代码明显没写完,缺少了执行请求、获取结果和错误处理的核心逻辑,这大概率是无响应的直接原因。给你补全并优化后的代码:
<?php // 开启错误提示(开发环境用,生产环境可关闭) error_reporting(E_ALL); ini_set('display_errors', 1); $apiKey = urlencode('ym4qoK7ier4-ekRPruxP1eqh0pPHsn9slaivPpMtZY'); $numbers = array(917823466910, 918790650519); $sender = urlencode('Garry'); $message = rawurlencode('This is your message'); $numbers = implode(',', $numbers); $data = array( 'apikey' => $apiKey, 'numbers' => $numbers, "sender" => $sender, "message" => $message ); $ch = curl_init('https://api.textlocal.in/send/'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // 强制返回结果而非直接输出,方便后续处理 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 开发环境临时关闭SSL验证(生产环境务必开启并配置证书) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 设置超时,避免无限等待 curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 执行请求 $response = curl_exec($ch); // 排查CURL自身错误 if(curl_errno($ch)){ die('CURL调用出错:' . curl_error($ch)); } // 打印响应,不管成功失败都能看到具体信息 print_r($response); // 关闭资源 curl_close($ch); ?>
2. 逐一排查常见业务问题
- API密钥有效性:登录Textlocal后台确认你的密钥没过期、权限正常,别不小心用了测试密钥或者已作废的密钥。
- 发送者ID合规性:Textlocal要求发送者ID必须是提前验证过的,不能随便用未认证的名称(比如你这里的
Garry),未验证的ID会直接被API拒绝。 - 手机号格式:确认你用的国际区号(比如91)正确,号码本身没有格式错误,且属于Textlocal支持的服务地区。
- 请求频率限制:检查是否短时间内调用次数过多触发了限流,超出限制会导致API无响应或返回错误码。
3. 调试小技巧
- 运行代码后,重点看打印出的
$response,Textlocal的API会返回JSON格式的错误信息(比如密钥无效、发送者ID未验证),直接帮你定位问题。 - 如果还是没响应,检查服务器是否能访问
https://api.textlocal.in,可以用curl -v https://api.textlocal.in在服务器终端测试网络连通性。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

