最近小編發現有些客戶反應使用短信寶接口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類
微信類