2012-08-24 169 views
1

當我在瀏覽器中輸入http://rest.example.com/account/get-balance/27e3xxx/7vvU4c95trfxxxx並點擊回車時,我得到以下XML響應。PHP GET請求無法正常工作

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?> 
<accountBalance> 
    <creditLimit>0.0</creditLimit> 
    <quotaEnabled>true</quotaEnabled> 
    <value>2.0</value> 
</accountBalance> 

,但是當我試圖同一個URL裏面PHP是發送響應找不到網頁(糟糕!該網頁不存在。)。這裏有一些方法,我嘗試...

使用SimpleXML

$content = simplexml_load_file($this->request_uri); 

使用文件的方法

$content = file_get_contents($this->request_uri); 

使用我貼捲曲

// create a new cURL resource 
    $ch = curl_init(); 

    // set URL and other appropriate options 
    curl_setopt($ch, CURLOPT_URL, $this->request_uri); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 

    // grab URL and pass it to the browser 
    $content = curl_exec($ch); 

    // close cURL resource, and free up system resources 
    curl_close($ch); 
  • $this->request_uri =相同的URL在瀏覽器中。我錯在哪裏?請幫助我。謝謝。
+4

同意。檢查:1. cookies 2. referer 3.用戶代理 – Peter

+0

@Peter,檢查後會發生什麼?任何提示? –

+0

我的意思是你應該在cURL請求中使用與瀏覽器相同的Cookies,Referer和User。 – Peter

回答

1

有正從瀏覽器轉移到服務器比只有URI的更多信息:只透過URI,但沒有通過,但未通過瀏覽器傳遞的其他信息

http://rest.example.com/account/get-balance/27e3xxx/7vvU4c95trfxxxx 

,你通常可以得到不同的結果。在你的情況下,顯然你會得到不同的結果。

瞭解當您使用瀏覽器請求URI時,傳遞給服務器的其他信息。這些其他信息被稱爲請求線,請求頭和主體。在GET請求,請求體通常是空的,所以你只需要集中精力請求線和頭,請參閱:

聯繫你的瀏覽器的技術文檔,如果有所謂的網絡工具,它們能夠顯示整個請求信息用於調試目的(例如Chromium有這個功能,Firefox有Firebug擴展功能)。

然後,您可以通過PHP's HTTP wrapper context optionsDocsCurl extension and it's endless array of optionsDocs輕鬆地模擬請求以實現您想要的功能。

+0

非常好的解釋......但我的問題將如何解決?或者我必須做什麼? –

+0

您使用哪個瀏覽器? – hakre

+0

任何瀏覽器相同的問題,也不應該依賴瀏覽器,這是短信應用程序。 –