Простой запрос Curl не работает - PullRequest
1 голос
/ 21 апреля 2011

У меня есть функция make_curl_request, чтобы сделать запрос curl.

/**
 * General Function to make curl request */
function make_curl_request($url, $data)
{
    ob_start();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_exec($ch);
    curl_close($ch);
    $strCurlResponse = ob_get_contents();
    ob_end_clean();
    return $strCurlResponse;
}

Я называю это следующим образом:

$strGatewayResponse = make_curl_request( REQUEST_URL, compact('strMobileNo', 'strKeywords', 'strApiKey') );

Я пытался, но не могу заставить мой код работать нормально.В настоящее время просто возвращаем строку ("") в качестве вывода.Где я ошибаюсь?

Моя цель - просто опубликовать несколько данных на следующей странице, расположенной в другом домене, получить ответ xml, проанализировать и отобразить его.Есть ли другое простое и хорошее решение?

Ответы [ 3 ]

5 голосов
/ 21 апреля 2011

Проблема в том, что RETURNTRANSFER имеет значение TRUE, что означает, что curl возвращает свой вывод вместо непосредственного вывода. Однако вы не фиксируете этот вывод в переменной, поэтому он падает на пол.

У вас есть два варианта

a) удалите функции ob _ * (), чтобы удалить буферизацию PHP, а затем выполните

$data = curl_exec($ch)
if ($data === FALSE) {
    die("Curl failed: " . curL_error($ch));
}

, после чего $data содержит содержимое выбранного вами URL.

b) удалите опцию RETURNTRANSFER и дайте curl выполнить свою обычную функцию «непосредственного вывода на клиент», которая затем захватывается буферизацией вывода PHP.

3 голосов
/ 28 июня 2017

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

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

FALSE, чтобы остановить cURL от проверки сертификата партнера. Альтернативные сертификаты для проверки можно указать с помощью параметра CURLOPT_CAINFO или каталог сертификатов можно указать с помощью параметра CURLOPT_CAPATH.

0 голосов
/ 23 ноября 2015

отправлять curl POST без заголовка не нормально.пожалуйста, найдите следующую ссылку.это может помочь OAuth, PHP, Rest API и curl дает 400 Bad Request

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