Как поменять curl метод POST на GET?

576
31 декабря 2016, 16:58

Такова проблемка, есть сервис вида site.ua/get_new.php?nomer=998166803, информацию с которого пытаюсь получить. Если напрямую ввести адрес в браузере, все хорошо, информация выводится. Если парсить curl'ом - парсится <h3>... не найдена</h3>

Стандартный набор опций, который работает на других сайтах, часть кода:

'curl_options'        => [
    CURLOPT_URL            => 'http://www.site.ua/get_new.php?',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_CONNECTTIMEOUT => 20,
    CURLOPT_TIMEOUT        => 20,
    CURLOPT_USERAGENT      => 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0',
    CURLOPT_REFERER        => 'http://www.site.ua/'
]

Может проблема в кодировках? Работаю utf8, сайт на cp1251. Пробовал отправлять заголовки из браузера, Accept-Language и другие.

Можно ли получить урл, к которому обращается curl с уже сформированными постданными, чтобы проверить урл? Как порешить проблемку?

Answer 1

Можно ли получить урл, к которому обращается curl с уже сформированными постданными, чтобы проверить урл? Как порешить проблемку?

Можно, используя curl_getinfo, например так:

<?php
// создание нового cURL ресурса
$ch = curl_init();
// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "http://www.sat.ua/new/templates/tracking_get_new.php?numerGK=998166803");
curl_setopt($ch, CURLOPT_HEADER, 0);
// Выдача URL в браузер
echo curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
// завершение сеанса и освобождение ресурсов
curl_close($ch);
?>
Answer 2

В целом разобрался благодаря материалам
- https://www.sitepoint.com/community/t/curl-request-in-diff-methods/30571/3
- http://stackoverflow.com/questions/1225409/how-to-switch-from-post-to-get-in-php-curl

Когда используется метод GET надо сразу формировать урл запроса таким образом

$qry_str = "?x=10&y=20";
curl_setopt($ch, CURLOPT_URL, 'http://example.com/test.php' . $qry_str); 

CURLOPT_HTTPGET или CURLOPT_CUSTOMREQUEST использовать смысла нет, так как в последних версия curl метод GET используется по-умолчанию. Поэтому используем банальный CURLOPT_POST и формируем строку как в коде выше.

READ ALSO
Как сделать из jsf Json?

Как сделать из jsf Json?

Всем Добрый вечер!

429
Не работает событие checked = false javascript [дубликат]

Не работает событие checked = false javascript [дубликат]

На данный вопрос уже ответили:

412
Получить данные из формы

Получить данные из формы

ЗдравствуйтеНа сайте есть кнопка, при нажатии на которую генерируется хэш, который мне нужно получить

395
Почему не срабатывает скрипт?

Почему не срабатывает скрипт?

Я только начил изучать Js это еще первые шаги )немогу найти ошибку может от того что устал)Но скрипт не работает

387