卷曲到 GuzzleHttp 请求
Curl to GuzzleHttp request
我收到了以下 curl 请求:
curl -H "Content-Type:application/json" -H "Api-Key:someapikey" -X -d {"address":"30598 West Street","city":"Oakdale"}' PUT "https://somedomain/api/members/1234567"
我正在尝试用 GuzzleHttp 复制它,如下所示:
$headers = [
'Api-Key' => $this->apiKey,
'Content-Type' => 'application/json',
];
$client = new Client([
'headers' => $headers,
]);
$res = $client->put("{$this->baseUrl}/members/{$fields['vip_id']}", [
'form_params' => $fields,
]);
我不断收到 415 Unsupported Media Type 响应。从我得到的卷曲来看,我想我已经涵盖了所有的基础。但是,当我调试时,它显示我的内容类型设置为 application/x-www-form-urlencoded
。根据文档,仅当尚未设置 Content-Type header 且包含 form_params 时,才会将 header 设置为此。因为我已经设置了这个header,它应该不会切换吧?请帮忙!
您的 header 被覆盖的原因是请求的 form_params
选项专门用于发送 x-www-form-urlencoded
数据。
您可以完全省略选项中的 Content-Type
header,而是在请求中使用 json
键发送 JSON 数据。
$headers = [
'Api-Key' => $this->apiKey,
];
$client = new Client([
'headers' => $headers,
]);
$res = $client->put("{$this->baseUrl}/members/{$fields['vip_id']}", [
'json' => $fields, // causes Guzzle to set content type to application/json
// and json_encode your $fields
]);
我收到了以下 curl 请求:
curl -H "Content-Type:application/json" -H "Api-Key:someapikey" -X -d {"address":"30598 West Street","city":"Oakdale"}' PUT "https://somedomain/api/members/1234567"
我正在尝试用 GuzzleHttp 复制它,如下所示:
$headers = [
'Api-Key' => $this->apiKey,
'Content-Type' => 'application/json',
];
$client = new Client([
'headers' => $headers,
]);
$res = $client->put("{$this->baseUrl}/members/{$fields['vip_id']}", [
'form_params' => $fields,
]);
我不断收到 415 Unsupported Media Type 响应。从我得到的卷曲来看,我想我已经涵盖了所有的基础。但是,当我调试时,它显示我的内容类型设置为 application/x-www-form-urlencoded
。根据文档,仅当尚未设置 Content-Type header 且包含 form_params 时,才会将 header 设置为此。因为我已经设置了这个header,它应该不会切换吧?请帮忙!
您的 header 被覆盖的原因是请求的 form_params
选项专门用于发送 x-www-form-urlencoded
数据。
您可以完全省略选项中的 Content-Type
header,而是在请求中使用 json
键发送 JSON 数据。
$headers = [
'Api-Key' => $this->apiKey,
];
$client = new Client([
'headers' => $headers,
]);
$res = $client->put("{$this->baseUrl}/members/{$fields['vip_id']}", [
'json' => $fields, // causes Guzzle to set content type to application/json
// and json_encode your $fields
]);