метод curl GET не работает - PullRequest
       3

метод curl GET не работает

0 голосов
/ 20 сентября 2011

Я пытался заставить curl отправить метод GET из формы. Я создал URL со всеми конкатенациями данных формы. Если я наберу запрос get прямо в адресной строке, он будет работать, но не будет работать с curl. Если я отправлю $ data, я получу сообщение об ошибке "Объект не найден!" Я попытался отобразить содержимое curl_error (), и оно вернулось пустым. Большое спасибо всем за вашу помощь.

Вот что у меня есть:

$url = complete url of get request that works when directly placed into adress bar
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec ($ch);
curl_close ($ch);
echo $data;

Спасибо, что помогли мне всем. Я попробовал следующий код, и он говорит «успех». Когда я отображаю данные $, я вижу «успех» на долю секунды, а затем я получаю «Объект не найден!» ошибка.

$url = complete url of get request that works when directly placed into adress bar
$ch = curl_init($url);
if ($ch) {
    echo "Success";
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $data = curl_exec ($ch);
    curl_close ($ch);

}
else {
    echo "Could not initialize curl session";
}

Возможно, я получаю ошибки, потому что ссылка, на которую я пересылаю GET, перенаправит ее на другую ссылку для обработки данных.

Ответы [ 5 ]

2 голосов
/ 20 сентября 2011

Попробуйте добавить

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ;

Это должно заставить его возвращать данные в виде строки, а не выводить их.

Подробнее см. в документации .

0 голосов
/ 28 июня 2019

Пожалуйста, попробуйте функцию http_build_query () для создания строки запроса. Я думаю, что это поможет, это работа в моем случае

0 голосов
/ 27 февраля 2013

Я столкнулся с той же проблемой и решил ее следующим образом:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POSTFIELDS , null );
    curl_setopt($ch, CURLOPT_POST , 0);
    curl_setopt($ch, CURLOPT_HTTPGET , TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER , TRUE);
    curl_setopt($ch, CURLOPT_TIMEOUT , 4);
    curl_setopt($ch, CURLOPT_USERAGENT , "" );
    curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
    curl_setopt($ch, CURLOPT_URL , $url );
    $rgxrData = curl_exec($ch);  // rgxrData stands for response get xml raw Data
    echo "Get curl_errno = " ;
    echo curl_errno($ch) ;

    if (curl_errno($ch)) {
            $error_message = curl_error($ch);
            $error_no = curl_errno($ch);

            echo "error_message: " . $error_message . "<br>";
            echo "error_no: " . $error_no . "<br>";
    }
    curl_close($ch);

    return $rgxrData;

Важно, чтобы вы следовали правильному порядку сброса с поста, чтобы получить. т. е. сначала установите для поля post значение null, затем для post значение 0, а затем для httpget - значение true. после того, как вы установили это, вы можете быть уверены, что сервер начнет готовить следующий запрос, как запрос на получение, иначе нет. После этого установите остальные параметры и URL-адрес (вместе со всеми параметрами). Это обеспечит правильное выполнение и выполнение запроса get.

Надеюсь, это поможет ...

0 голосов
/ 20 сентября 2011

Полагаю, вам не хватает curl_init для инициализации сеанса.

Редактировать с предложенным кодом

Попробуйте скопировать и вставить следующий код:

$url = complete url of get request that works when directly placed into adress bar
$ch = curl_init($url);
if ($ch) {
    echo "Success";
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $data = curl_exec ($ch);
    curl_close ($ch);
    echo $data;
}
else {
    echo "Could not initialize curl session";
}

И дайте нам знать, если сеанс curl успешно инициализирован.

0 голосов
/ 20 сентября 2011

Попробуйте использовать опцию CURLOPT_RETURNTRANSFER:

   $ch = curl_init();
    $url = complete url of get request that works when directly placed into adress bar
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $data = curl_exec ($ch);
    curl_close ($ch);
    echo $data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...