Laravel 没有正确发出 Guzzle HTTP POST 请求
Laravel not making Guzzle HTTP POST request correctly
我正在处理 megento 集成并尝试通过使用表单数据发出 post 请求来获取管理员访问令牌。我在 Postman 上测试了这条路线,它工作正常:
但是,当我尝试使用 Guzzle Http Client 在 Laravel 中实现相同的请求时,似乎无法正确发出请求,就好像表单数据 post 正文未被识别一样,它一直向我显示错误,说字段值是必需的。这是我的要求:
$client = new \GuzzleHttp\Client();
$response = $client->post($request['magento_domain'] . '/rest/V1/integration/admin/token', [
'form_params' => [
'username' => $magento_admin_username,
'password' => $magento_admin_password
], [
'Accept' => 'application/json',
'Content-Type' => 'application/json'
]
]);
然后这是我不断收到的错误:
更新:我也试过这样的请求,它抛出同样的错误:
$response = $client->post($request['magento_domain'] . '/rest/V1/integration/admin/token', [
'form_params' => [
'username' => $magento_admin_username,
'password' => $magento_admin_password
]
]);
如有任何帮助,我将不胜感激!
发送 form-data body 时,“Content-Type: application/json”请求 header 不正确。
去掉即可,Guzzle在使用“form_params”时自动添加正确的Content-Type。只是 JSON 是错误的,因为 body 显然不是 JSON.
我在生产环境中成功使用了 JSON 请求:
$res = $this->client->request('POST', 'https://.../rest/V1/integration/admin/token', [
'headers' => [
'Accept' => 'application/json',
'content-type' => 'application/json'
],
'json' => [
'username' => config('app.shopUser'),
'password' => config('app.shopPw')
]
]);
或者尝试使用“multipart”而不是“form_params”——这应该发送一个 multipart/form-data
请求,这就是 Postman 对“form-data”的含义。
“form_params”等同于“x-www-form-urlencoded”。
我正在处理 megento 集成并尝试通过使用表单数据发出 post 请求来获取管理员访问令牌。我在 Postman 上测试了这条路线,它工作正常:
但是,当我尝试使用 Guzzle Http Client 在 Laravel 中实现相同的请求时,似乎无法正确发出请求,就好像表单数据 post 正文未被识别一样,它一直向我显示错误,说字段值是必需的。这是我的要求:
$client = new \GuzzleHttp\Client();
$response = $client->post($request['magento_domain'] . '/rest/V1/integration/admin/token', [
'form_params' => [
'username' => $magento_admin_username,
'password' => $magento_admin_password
], [
'Accept' => 'application/json',
'Content-Type' => 'application/json'
]
]);
然后这是我不断收到的错误:
更新:我也试过这样的请求,它抛出同样的错误:
$response = $client->post($request['magento_domain'] . '/rest/V1/integration/admin/token', [
'form_params' => [
'username' => $magento_admin_username,
'password' => $magento_admin_password
]
]);
如有任何帮助,我将不胜感激!
发送 form-data body 时,“Content-Type: application/json”请求 header 不正确。
去掉即可,Guzzle在使用“form_params”时自动添加正确的Content-Type。只是 JSON 是错误的,因为 body 显然不是 JSON.
我在生产环境中成功使用了 JSON 请求:
$res = $this->client->request('POST', 'https://.../rest/V1/integration/admin/token', [
'headers' => [
'Accept' => 'application/json',
'content-type' => 'application/json'
],
'json' => [
'username' => config('app.shopUser'),
'password' => config('app.shopPw')
]
]);
或者尝试使用“multipart”而不是“form_params”——这应该发送一个 multipart/form-data
请求,这就是 Postman 对“form-data”的含义。
“form_params”等同于“x-www-form-urlencoded”。