2013-10-08 78 views
0

所以,我有這種方法,我需要調用一個外部URL(不同的域名)。這就像http://192.168.2.2:9090/send?num=100&txt=text;有沒有辦法做到這一點,而不使用捲曲?執行外部獲取url請求

我想我應該澄清,我已經嘗試使用捲曲yii-curl擴展,但它似乎不工作。它提供了一個完整的格式化url,但如果我嘗試修改帶有參數num和txt的參數的url,它不起作用。最好我正在尋找一個沒有curl的解決方案,但如果這是不可能的,我可以使用一些幫助如何格式化和執行一個合適的url,所以我也可以提供參數的URL。謝謝。

編輯:我不認爲file_get_contents()將工作,因爲網址實際上是發送短信的短信網關。電話號碼和短信文本作爲參數提供。如果我猜錯了,請告訴我。

編輯2:這是我在這裏的建議後嘗試。

public function sendTXTSMS($sentToNum,$text) 
     { 

      $construct_url="http://192.168.2.2:9090/send?num={$sentToNum}&txt={$text}"; 
      file_get_contents($construct_url); 
     } 

,然後調用它像,

$text='Lorem ipsum dolor ........ '; 
$this->sendTXTSMS(XXXXXXXXXX,$text) 

XXXXXXXXXX當然這裏掩蓋了電話號碼。

現在我得到一個HTTP request failed! HTTP/1.1 400 Bad Request錯誤。 allow_url_fopen已啓用,我可以通過在瀏覽器中輸入它來訪問網址。也嘗試在url上使用urlencode。

+1

file_get_contents()? –

+0

如果在php.ini中啓用了url_fopen(我相信它是默認的,它通常用於我的所有安裝),幾乎所有的php文件函數都可以與url一起工作。所以file_get_contents($ url)將返回一個字符串。 –

+0

不起作用。該網址實際上是發送短信的短信網關。電話號碼和短信文本作爲參數提供。 – redGREENblue

回答

0

如果這是一個GET請求,您可以使用file_get_contents($url);

如果您需要更多選項,您可以嘗試HTTP library,但沒有理由不直接使用libcurl。這是標準做法。

它連接到與SMS相關的服務並不重要。如果它是可以連接到的服務器上的Web服務的URL,則可以向它發出請求。

0

的file_get_contents()會工作,如果allow_url_fopen已被激活,但我覺得你的問題是這樣的:

當我提供它的工作原理全格式的URL,但如果我嘗試修改 帶有參數num和txt的參數,它不起作用。

什麼代碼修改了URL?

+0

'http://192.168.2.2:9090/send?num={$num}&txt={$text}'; – redGREENblue

+0

@redGREENblue:就是這樣。請嘗試使用雙引號「 – AbraCadaver

+0

替換括號或將括號括在引號中,因爲我嘗試了兩個並且仍然不能正常工作 – redGREENblue

0

使用curl應該是一個更好的選擇,因爲你可以很容易地與HTTP狀態代碼處理...

但有或沒有捲曲,你需要正確地構建您的網址,urlencode應PARAMS被使用,而不是url:

$sentToNum = urlencode($sentToNum); 
$text = urlencode($text); 
$construct_url="http://192.168.2.2:9090/send?num={$sentToNum}&txt={$text}";