Сообщение Guzzle с использованием ключей API приводит к 400 неверным запросам

Я использую Guzzle версии 6.3 и у меня проблемы с моим запросом. Я продолжаю получать ошибку 400 Bad Request, и я не уверен, что лучше всего исправить это или что может быть причиной ошибки. Когда я настроил это с помощью Postman и тех же критериев, все работает правильно.

$client = new GuzzleHttp\Client();
$body = $this->actionGenerateMessage();

try {
    $response = $client->post('the/endpoint',
        array(
            'body' => $body,
            'headers' => array(
                'apikey' => 'apikeyhere',
             )
        )
    );
} catch (RequestException $e) {
    var_dump($e->getResponse()->getBody()->getContent());
}

Вы проверили, что он работает, используя более простые средства, такие как curl, из вашей оболочки или даже через приложение разработки REST, такое как Postman?

cnizzardini 20.08.2018 00:20

да. Я использовал Postman для тестирования ранее, и все работает. Теперь пытаюсь внедрить в свое приложение и получаю ответ 400 Bad Request.

user469626 20.08.2018 00:27

Затем вам нужно придумать, как продублировать то, что вы сделали в почтальоне. Использует ли он базовую аутентификацию? Какой-то дайджест заголовка auth? Каковы требования к авторизации API. Вам необходимо предоставить дополнительную информацию, если вы надеетесь получить помощь.

cnizzardini 20.08.2018 00:56

Я дублирую это, насколько я могу судить. Он использует конечную точку Apigee, которая подключается к Amazon Active MQ. Конечная точка Apigee настроена так, что мне нужно только отправить ключ API как часть заголовка, а затем сообщение. Поэтому я не уверен, правильно ли он отправляет информацию, и сервер возвращает неверный запрос, или мои настройки Guzzle не подходят для этого типа запроса.

user469626 20.08.2018 01:06

400 ошибок происходит из-за ошибок в синтаксисе HTTP-запроса. Соответствует ли ваше тело типу содержимого? редактировать ниндзя от OP :)

Loek 20.08.2018 16:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
5
4 179
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я смог заставить это работать. Похоже, что установка ActiveMQ ожидала сообщения JSON, когда я пытался отправить сообщение XML.

Я смог определить это, включив флаг отладки Guzzle.

$client = new GuzzleHttp\Client([
    'debug'           => true
]);

Затем добавляем тип содержимого в заголовки.

'headers' => array(
    'apikey' => 'apikeyhere',
    'Content-Type' => 'application/xml',
)

Надеюсь, это поможет кому-то в подобной лодке.

Другие вопросы по теме