2017-02-18 66 views
0

我正在SMS Project的在線購物商店工作,目的是當客戶下單時系統應該在結帳時自動發送客戶提供的短信。HTTPS URL不能在PHP中工作

SMS公司爲我們提供了API文檔。首先,他們需要生成會話ID的身份驗證過程,並使用會話ID向用戶發送短信。

驗證碼:

$msisdn = 'abc'; 
$password = 'xyz'; 
$session_req="https://telenorcsms.com.pk:27677/corporate_sms2/api/auth.jsp?msisdn=".$msisdn."&password=".$password; 

$xmlResponse = simplexml_load_file('https://telenorcsms.com.pk:27677/corporate_sms2/api/auth.jsp?msisdn=abc&password=xyz'); 
    $sessionID = $xmlResponse->corpsms->data;  
    var_dump($sessionID); 
    echo "Session ID: " . $sessionID; 

現在的問題是我無法獲取會話ID。當我使用var_dump($sessionID);比NULL是輸出,如果我嘗試通過使用echo "Session ID: " . $sessionID;顯示屏幕上沒有任何顯示。如果我使用header('Location:'.$session_req);以下的代碼是上面的URL的響應併成功顯示會話ID。

成功響應:

<?xml version="1.0" encoding="UTF-8" ?> 
<corpsms> 
    <command>Auth_request</command> 
    <data>Session ID</data> 
    <response>OK</response> 
</corpsms> 

會話ID店的XML結構及其在不同的網址,但我的文件是在不同的URL。 (http://example.com/neworder.php)。 任何人都可以讓我知道如何將會話ID存儲在PHP中的變量,以進一步發送短信? 重要的一點是會話ID將在30分鐘不活動後過期。 下面是使用會話ID發送短信的網址:

https://telenorcsms.com.pk:27677/corporate_sms2/api/sendsms.jsp?session_id=xxxx&to=923xxxxxxxxx&text=xxxx&mask=xxxx 

在此先感謝。

MUNEEB

+0

你嘗試過使用捲曲嗎? – tousif

+0

是的,但沒有找到解決方案,因爲目的是獲取會話ID值。 –

+0

$ ch = curl_init(); \t \t curl_setopt($ ch,CURLOPT_URL,$ session_req); \t \t curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true); \t \t //對於SSL證書 \t \t curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false); \t \t $ response = curl_exec($ ch); \t \t $ tokens = explode(「\ n」,trim($ response)); \t \t curl_close($ ch); \t \t var_dump($ response); –

回答

0
  • 存儲XML響應到PHP變量(我們稱之爲$ xmlResponse
  • 輕鬆就可以得到通過提交其參數相關的API網址file_get_contents() XML響應功能。然後使用函數simplexml_load_string()

    $xmlResponseString = file_get_contents($apiUrl) 
    $xmlResponse = simplexml_load_string($xmlResponseString); 
    
  • 即響應可以用作SimpleXMLElement其轉換爲XML對象。

  • 會話ID應該這樣來訪問:

    $sessionID = $xmlResponse->corpsms->data; 
    
+0

謝謝你的答案!但問題是我如何執行PHP中的URL $ session_req =「https://telenorcsms.com.pk:27677/corporate_sms2/api/auth.jsp?msisdn=」。$ msisdn。「&password =」。$ password ; –

+0

simplexml_load_file()將執行url並將XML響應作爲SimpleXMLElement返回給您。 – Hatem

+0

嗨我試過了,但會議沒有得到:$ msisdn ='abc'; \t \t $ password ='xyz'; \t \t $ xmlResponse =使用simplexml_load_file( 'https://telenorcsms.com.pk:27677/corporate_sms2/api/auth.jsp?msisdn=」 $ MSISDN。 「&密碼=」 $密碼。'); \t \t $會話ID = $ xmlResponse-> corpsms->數據; \t \t \t \t回聲「會話ID:」 $會話ID; –

0

我在HostGator的服務器執行腳本的時候,但它只是工作的罰款在我的本地主機服務器面臨着同樣的問題。你只需要在WAMP或XAMP服務器中啓用OPENSSL擴展。

+0

解決:按照託管服務器上的這些步驟 1)啓用OPENSSL 2)要求您的託管服務提供商打開端口27677的外部請求。 –