2013-04-08 129 views
0

訪問URL我有它返回一個JSON這個Web服務:問題與捲曲

http://54.246.99.134:8080/services-app/services/Users/GetConfigForMetroAndLang?metroAreaId=1&langId=39 

當我用我的瀏覽器訪問它,我得到我的JSON和所有工作確定。 當我試着使用捲曲抓住它或的file_get_contents網頁只是不斷加載到: 未能打開流:連接超時

其他URL是偉大的工作,當我嘗試從服務器獲取他們(其他任何地址)。

**編輯** 感謝您的意見

我的代碼是非常簡單的:)

$curl = curl_init('http://54.246.99.134:8080/services-app/services/Users/GetConfigForMetroAndLang?metroAreaId=1&langId=39'); 
curl_setopt($curl, CURLOPT_FAILONERROR, true); 
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101  Firefox/12.0'); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($curl); 
print_r($result) ; 

我現在明白了它從我的隊友之一的本地主機的工作原理.. 。 所以它可能是一個服務器/防火牆問題?任何方向可能? ** /編輯**

真的很感激任何想法。 謝謝!

+1

[Can not Reproduce](http://codepad.viper-7.com/n8bkfg)。你的最後肯定會遇到一些問題。 – Rikesh 2013-04-08 05:42:09

+1

嗨。請分享您的代碼。 – 2013-04-08 05:42:30

+1

我已經在瀏覽器和php/file_get_contents中試過了。兩者都給了我一個JSON響應 – hek2mgl 2013-04-08 05:42:41

回答

1

我檢查了你的代碼,它對我來說工作得很好。

最有可能的問題是您的服務器無法連接到外部資源,可能是由於防火牆的限制。

另外allow_url_fopen需要在您的PHP設置中爲file_get_contents使用URL。你可以在你的任何頁面打印出phpinfo()

也不要使用file_get_contents來獲取內容或數據,因爲它獲取遠程文件時效果不佳。它也不處理緩慢的網絡連接或重定向,並且不返回錯誤代碼。你應該使用curl,它也快於file_get_contents

關於你的問題,我認爲這將是一個防火牆問題。請檢查您的防火牆設置。

此外,代碼中存在錯誤。你正在混合$ ch和$ curl。它應該是:

$curl = curl_init('http://54.246.99.134:8080/services-app/services/Users/GetConfigForMetroAndLang?metroAreaId=1&langId=39'); 
curl_setopt($curl, CURLOPT_FAILONERROR, true); 
curl_setopt($curl , CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101  Firefox/12.0'); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($curl); 
print_r($result) ; 

您可以使用curl_getinfo獲取有關特定傳輸的信息。

+0

我想你是對的,必須是一些防火牆或服務器配置。已檢查phpinfo - allow_url_fopen已打開。也許是防火牆問題:\ ...我會嘗試聯繫服務器的系統管理員。謝謝 – Yanipan 2013-04-08 06:06:52

+1

在你的ini中有safe_mode = 1會覆蓋你認爲你可能正在做的任何allow_url_fopen設置... – Cups 2013-04-08 06:37:48

+0

謝謝你不放棄:) - 安全模式關閉... – Yanipan 2013-04-08 06:42:22