You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Laravel HTTP客户端发送Upstox授权token的curl请求?

使用Laravel HTTP客户端调用Upstox授权Token接口的正确方式

问题背景

需要调用Upstox的授权Token接口,对应的curl请求如下:

curl -X 'POST' 'https://api.upstox.com/v2/login/authorization/token' \
-H 'accept: application/json' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'code=<Your-Auth-Code-Here>&client_id=<Your-API-Key-Here>&client_secret=<Your-API-Secret-Here>&redirect_uri=<Your-Redirect-URI-Here>&grant_type=authorization_code'

尝试用Laravel HTTP客户端实现时返回400错误,错误代码如下:

$response = Http::withHeaders([
    'accept' => 'application/json',
    'Content-Type' => 'application/x-www-form-urlencoded'
])->post('https://api.upstox.com/v2/login/authorization/token', [
    'd' => $data,
]);

正确实现方式

你的代码错误在于将请求参数包裹在了d键下,而接口需要的是直接以x-www-form-urlencoded格式传递的键值对参数。正确的实现无需嵌套d键,直接传递参数数组即可:

  1. 先构造包含所有必填参数的数组:
$data = [
    'code' => '<Your-Auth-Code-Here>',
    'client_id' => '<Your-API-Key-Here>',
    'client_secret' => '<Your-API-Secret-Here>',
    'redirect_uri' => '<Your-Redirect-URI-Here>',
    'grant_type' => 'authorization_code'
];
  1. 发送请求:
$response = Http::withHeaders([
    'accept' => 'application/json'
])->post('https://api.upstox.com/v2/login/authorization/token', $data);

说明

  • Laravel的HTTP客户端会自动将关联数组参数编码为application/x-www-form-urlencoded格式的请求体,因此无需手动设置Content-Type头(如果显式设置也不会有问题,但不是必须的)。
  • 之前的400错误是因为接口无法识别嵌套在d键下的参数,必须直接传递每个参数的键值对。

内容的提问来源于stack exchange,提问作者rjcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:37:49