使用cURL访问URL的问题

时间:2013-04-08 05:38:33

标签: php curl

我有这个返回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) ; 

我现在明白它的作用来自我的一个队友的当地主持人...... 所以它可能是服务器/防火墙问题?任何方向也许? ** /编辑**

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

1 个答案:

答案 0 :(得分:1)

我检查了你的代码,它对我来说很好。

最有可能的问题是您的服务器无法连接到外部资源,可能是由于防火墙限制。

同样allow_url_fopen需要在file_get_contents的PHP设置中启用才能使用网址。您可以在任意页面中打印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获取有关特定转移的信息。