Я могу сделать запрос, который хочу, используя cURL, но он терпит неудачу, когда я пытаюсь воспроизвести его с помощью Laravel (возвращая 404). Я удостоверился, что отправляемые данные идентичны.

Вот cURL:

curl --request POST \
--url https://www.api-provider.com/api/v2/access_keys \
--header 'Authorization: Bearer 53d9814ed1385f44e6d5ed24979e11c2f7da654b40' \
--header 'Content-Type: application/json' \
--data '{"access_key":{"key":"Lmy48Z0vA89","rate_ids":["[]"],"listing_id":"5de8f56797209ffbe","quantity":1,"is_active":true}}'

Вот эквивалент Laravel (см. документацию Guzzle):

$response = Http::retry(3, 100)->withHeaders([
    'Authorization' => 'Bearer 53d9814ed1385f44e6d5ed24979e11c2f7da654b40',
    'Content-Type' => 'application/json'
])->post('https://www.api-provider.com/api/v2/access_keys',[
    'json' => [
        'access_key' => [
            'key' => "Lmy48Z0vA89", 
            'listing_id' => "5de8f56797209ffbe",
            'rate_ids' => [
            ],
            'quantity' => 1,
            'is_active' => true,
        ]
    ],
]);

Конечная точка, идентификаторы и токены авторизации являются поддельными для SO, но предположим, что они правильные и работают через cURL, а затем были перенесены в версию Laravel.

Учитывая, что запрос работает через cURL, я предполагаю, что ошибка чисто синтаксическая? Я пробовал отлаживать и видеть, что отправляется в API для сравнения, но Laravel не показывает мне полезную нагрузку, даже когда есть withOptions(['debug' => true]).

0
Chuck Le Butt 27 Фев 2021 в 21:11

1 ответ

Лучший ответ
$response = Http::retry(3, 100)->withHeaders([
    'Authorization' => 'Bearer 53d9814ed1385f44e6d5ed24979e11c2f7da654b40',
    'Content-Type' => 'application/json'
])->post('https://www.api-provider.com/api/v2/access_keys',[
        'access_key' => [
            'key' => "Lmy48Z0vA89", 
            'listing_id' => "5de8f56797209ffbe",
            'rate_ids' => [
            ],
            'quantity' => 1,
            'is_active' => true,
        ]
]);

Вам действительно нужна привязка как json array 'json' => [access-key ...]

0
Met Byrdy 27 Фев 2021 в 18:17