最近小编发现有些客户反应使用短信宝接口http请求短信发送失败,经过技术人员排查发现是因为客户服务器的机房阻断了http请求而导致的(特别是将服务器托管在国外的客户)
解决这种问题一般有两种方案
第一种您可以联系您服务器所在机房工作人员打开http请求
第二种您可以使用短信宝https短信接口
首先检测确认是否是机房线路阻断http请求
如果您是windows服务器您可以用您的IE浏览器访问下国内网站 例如:http://www.donews.com/如果不能访问则表示是您服务器所在机房阻断了http请求的原因。
如果您是linux服务器您可以使用命令 wget http://www.donews.com/来测试 如果显示下载失败则也是因为您服务器所在机房阻断了http请求的原因
解决方案
1:找到您的发送类函数,将短信宝http接口替换成https
|
1
2
3
|
2:更改请求短信宝请求方式使用CURL请求
|
1
2
3
4
5
6
7
8
9
10
11
12
|
$result =file_get_contents($sendurl);替换成 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $sendurl); curl_setopt($ch, CURLOPT_TIMEOUT, 1); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证证书 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //不验证证书 $r = curl_exec($ch); curl_close($ch); |
完整实例
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
$user = "***"; //短信宝平台帐号$pass = md5("****"); //短信宝平台密码$content="短信内容";//要发送的短信内容$phone = "*****";//要发送短信的手机号码$sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $sendurl);curl_setopt($ch, CURLOPT_TIMEOUT, 1);curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证证书curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //不验证证书$result = curl_exec($ch);curl_close($ch);echo $result; |
3:如有其它疑问,请咨询短信宝客服。
最新更新
电商类
CMS类
微信类