2013-04-08 2 views
0

У меня есть этот веб-сервис, который возвращает JSON:проблемы с доступом к URL с Curl

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

Когда я к нему доступ с помощью моего браузера, я получаю мой JSON и все работает нормально. При попытке захватить его с CURL или file_get_contents страница просто держит нагрузку до: не удалось открыть поток: Тайм-аут соединения

Другие URLS работают замечательно, когда я пытаюсь получить их с сервера (любой другой адрес).

** редактировать ** Спасибо за комментарии

Мой код очень прямо вперед :)

$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) ; 

теперь я понимаю, он работает с локального хоста одного из моих товарищей по команде .. , так что это, вероятно, проблема с сервером/брандмауэром? возможно, в любом направлении? **/edit **

Приятно оценить любую идею. Спасибо!

+1

[Can not reproduce] (http://codepad.viper-7.com/n8bkfg). Должна быть какая-то проблема с вашей стороны. – Rikesh

+1

Привет. Поделитесь своим кодом, пожалуйста. –

+1

Я пробовал это как в браузере, так и в php/file_get_contents. Оба дали мне ответ json – hek2mgl

ответ

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

+1

Наличие safe_mode = 1 в вашем ini переопределит любые настройки allow_url_fopen, которые, по вашему мнению, вы можете сделать ... – Cups

+0

спасибо, что не сдался :) - Безопасный режим отключен ... – Yanipan