параметры командной строки cURL в переполнении стека

Я работаю над сценарием PHP, который должен подключаться к REST API. Поставщик API, предложил использовать cURL. Они дали мне пример того, как использовать его в командной строке:

curl -D- -u "user:password" -X GET -H "Content-Type: application/json" http://example.com/api/searchFunction?jql=assignee=user1

PHP-скрипт выглядит следующим образом:

<?php

$defaults = array(
CURLOPT_HEADER => true,
CURLOPT_URL => 'http://example.com/api/searchFunction?jql=assignee=user1',
CURLOPT_USERPWD => "user:password",
CURLOPT_HTTPAUTH => 'CURLAUTH_BASIC'
);

$ch = curl_init();
curl_setopt_array($ch, ($defaults));

echo "cURL output: ".curl_exec($ch);

curl_close($ch);

?>

Как вы можете себе представить, версия из командной строки работает нормально, но в версии PHP я получил следующую ошибку:

Field 'assignee' does not exist or this field cannot be viewed by anonymous users.

Это говорит о том, что проверка логина пользователя не работает. Тем не менее, пользователь и пароль верны.

Я искал уже отвеченные посты эквивалентов параметров cURL между версией командной строки и версией PHP, но не смог найти правильные параметры для версии PHP.

0

Решение

Вы еще не полностью повторили свою команду cURL.

Для начала, вы никогда не устанавливали Content-Type: application/json опция заголовка. Вы должны установить это с помощью CURLOPT_HTTPHEADER вариант.

Во-вторых, командная строка cURL и PHP cURL используют разные User-Agent ценности.

Подумайте о том, чтобы включить в командной строке параметр verbose cURL, чтобы вы могли видеть всю информацию, которую она отправляет, а затем реплицировать ее PHP.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]