Как получить ответ Perl Post от Curl PHP - PullRequest
1 голос
/ 26 сентября 2019

Добрый день!Мой клиент дал нам конечную точку API, где ответом является XML, когда вы передаете в некоторых командах, я хотел бы знать, есть ли способ, которым мы можем запустить конечную точку в PHP и получить ответ, я пытался использовать PHP curl, ноответ показывает 400 или неверный запрос.Я могу получить доступ к конечной точке с помощью команд / параметров в браузере URL, чтобы она работала.Но когда я пытаюсь сделать это с помощью curl, в нем нет ответа.Это возможно, или я делаю что-то не так с моим кодом?

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://www.winquote.net/cgi-bin/compete.pl?dc=-cv1.5 -ccca -qt0 -pccaXXXXXXXXX -rt0 -dob11061992 -gen1 -rR -fa500000 -pg0 -pi4 -lc1 -pm0 -rc0 -rop0 -langen -fmt -ceilp -faEXACT",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST"
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

1 Ответ

3 голосов
/ 27 сентября 2019

Взгляните на Пробелы в postFields в PHP Curl , которые могут ответить на ваш вопрос.

Единственная проблема здесь - неправильный параметр запроса, а в ответе 400 указано:Вы так.В браузере вы видите, что пространства преобразованы в «% 20». Браузер сделал эту работу за вас.Вы должны сделать то же самое, то есть кодировать параметр запроса из-за пробелов перед выполнением запроса post.

From https://curl.haxx.se/docs/manpage.html#--data-urlencode

- data-urlencode

(HTTP) Это отправляет данные, аналогично другим опциям -d, --data, за исключением того, что выполняется кодирование URL.

Чтобы быть CGI-совместимым, часть должна начинаться с имени, за которым следуетразделителем и спецификацией контента.Часть может быть передана в curl с использованием одного из следующих синтаксисов:

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