我有这个返回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) ;
我现在明白它的作用来自我的一个队友的当地主持人...... 所以它可能是服务器/防火墙问题?任何方向也许? ** /编辑**
真的很感激任何想法。 谢谢!
答案 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
获取有关特定转移的信息。