【发布时间】:2021-02-27 18:11:35
【问题描述】:
我可以使用 cURL 发出我想要的请求,但是当我尝试使用 Laravel 复制它时它失败了(返回 404)。我已确保发送的数据是相同的。
这是卷曲:
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's documentation 之后):
$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,端点、ID 和授权令牌是假的,但假设它们是正确的并且在 cURL 上工作,然后放入 Laravel 版本。
鉴于请求通过 cURL 工作,我假设错误纯粹是语法?我尝试调试并查看发送到 API 以进行比较的内容,但即使 withOptions(['debug' => true]) 存在,Laravel 也没有向我显示有效负载。
【问题讨论】: