0

我有这个返回 JSON 的 Web 服务:

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

当我使用浏览器访问它时,我得到了我的 JSON 并且一切正常。当我尝试使用 CURL 或 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) ; 

我现在明白它可以在我的一个队友的本地主机上运行......所以它可能是服务器/防火墙问题?也许有什么方向?** /编辑 **

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

4

1 回答 1

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 来获取有关特定转移的信息。

于 2013-04-08T05:58:01.293 回答