New*_*ser 5 curl xdebug laravel guzzle
我使用 Laravel 5.5 和 Guzzle 6.3 开发网站。
我在尝试使用 API 为 BOX 创建文件夹时尝试大量发布嵌套数组时遇到问题。
$url = $this->api_url . "/folders";
$headers = [
'Authorization' => 'Bearer ' . $this->access_token,
];
$client = new Client();
$response = $client->post($url, [
'headers' => $headers,
'form_params' => [
'name' => $name,
'parent' => [
'id' => $parent_id
]
]
]);
Run Code Online (Sandbox Code Playgroud)
它向我显示了这样的错误:
实体主体应该是正确嵌套的资源属性名称/值对
我也已经尝试过使用shell_execcurl 所以它从命令提示符运行 curl 它给了我同样的错误
但是当我尝试从 cygwin 运行时,curl 工作正常。
我也可以使用多部分请求嵌套数组进行上传工作正常。
当嵌套数组在多部分请求中正常工作时,我不知道为什么会遇到此嵌套数组问题。
Box 文档 POST 的参考在这里。
根据文档,您不能使用 multipart 选项:
form_params 不能与 multipart 选项一起使用。您将需要使用其中之一。对 application/x-www-form-urlencoded 请求使用 form_params,对 multipart/form-data 请求使用 multipart。
此选项不能与 body、multipart 或 json 一起使用
因此,也许尝试在创建 Client 实例时设置标头:
$url = $this->api_url . "/folders";
$client = new Client([
'headers' => [
'Authorization' => 'Bearer ' . $this->access_token,
'Accept' => 'application/json',
]
]);
$response = $client->post($url, [
'json' => [
'name' => $name,
'parent' => [
'id' => $parent_id
]
]
]);
Run Code Online (Sandbox Code Playgroud)
实际上,再次阅读框参考后,发布请求而不上传文件,它接受 application/json ,这是用于 application/x-www-form-urlencoded 的 form_params