我使用Laravel 5.5和Guzzle 6.3开发网站。
当尝试使用API创建到BOX的文件夹时,尝试吞噬嵌套数组时遇到问题。
shell_exec
它向我显示了这样的错误:
实体主体应为正确嵌套的资源属性名称/值对
我也已经尝试过使用{{1}} curl,因此它在命令提示符下运行curl,并且给了我同样的错误
但是当我尝试从cygwin运行时,卷曲效果很好。
我也可以使用分段请求嵌套数组来完成上传。
当嵌套数组与多部分请求一起正常工作时,我不知道为什么会遇到这个嵌套数组问题。
希望有人能在这里启发我。
包装盒文档POST here
的参考答案 0 :(得分:0)
根据docs,您不能使用multipart选项:
form_params不能与multipart选项一起使用。您将需要使用其中一个。将form_params用于application / x-www-form-urlencoded请求,将multipart用于multipart / form-data请求。
此选项不能与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
]
]
]);
实际上,在再次阅读框引用之后,发布没有文件上传的请求,它接受application / json, 这是用于application / x-www-form-urlencoded
的form_params答案 1 :(得分:0)
您可以对包含嵌套字段的数据发出任何http请求;您必须在标题上包含Content-Type
;然后将其设置为application/x-www-form-urlencoded
,如下所示:
$url = $this->api_url . "/folders";
$headers = [
'Accept' => 'application/json',
'Content-Type' => 'application/x-www-form-urlencoded',
'Authorization' => 'Bearer ' . $this->access_token,
];
$client = new Client();
$response = $client->post($url, [
'headers' => $headers,
'form_params' => [
'name' => $name,
'parent' => [
'id' => $parent_id
]
]
]);