Почему нельзя получить данные JSON из PHP? - PullRequest
2 голосов
/ 13 декабря 2011

У меня есть веб-страница, которая предоставляет некоторые общедоступные интерфейсы, доступ к которым осуществляется как простой вызов AJAX с других страниц. Пример:

http://domain1.com/interface/function.php:

$json['result'] = ... // fill with data
$json['ok'] = true;
echo json_encode($json);

http://domain2.com/application.php:

$call = 'http://domain1.com/interface/function.php';
$curl = curl_init($call);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$call_data = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);
print_r($error);
print_r($call_data);

Проблема в том, что $ call_data пуст. Я уже пытаюсь использовать * file_get_contents () * и другие параметры curl без успеха. Также, если я изменю первую строку в application.php на:

$call = 'http://www.google.com/';

$ call_data получает правильное содержимое файла (конечно, содержимое главной страницы Google). Более того, * curl_error () * не возвращает никаких ошибок. Что происходит? Почему?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2012

У меня было то же самое в прошлые выходные.Если у вас есть какой-нибудь файл htaccess или аналогичный файл, который объединяет URL провайдера службы и добавляет / или делает какое-то перенаправление, это может вызвать проблемы - и curl_exec($curl);, и curl_error($curl); будут пустыми строками.

0 голосов
/ 13 декабря 2011

из руководства по PHP curl_exec:

Возвращает TRUE в случае успеха или FALSE в случае ошибки.Однако, если установлен параметр CURLOPT_RETURNTRANSFER, он вернет результат в случае успеха, FALSE в случае ошибки.

Вы уверены, что для CURLOPT_RETURNTRANSFER установлено значение true?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...