大量发布嵌套数组问题

时间:2018-09-19 17:23:30

标签: laravel curl xdebug guzzle

我使用Laravel 5.5和Guzzle 6.3开发网站。

当尝试使用API​​创建到BOX的文件夹时,尝试吞噬嵌套数组时遇到问题。

shell_exec

它向我显示了这样的错误:

  

实体主体应为正确嵌套的资源属性名称/值对

我也已经尝试过使用{{1}} curl,因此它在命令提示符下运行curl,并且给了我同样的错误

picture

但是当我尝试从cygwin运行时,卷曲效果很好。

我也可以使用分段请求嵌套数组来完成上传。

当嵌套数组与多部分请求一起正常工作时,我不知道为什么会遇到这个嵌套数组问题。

希望有人能在这里启发我。

包装盒文档POST here

的参考

2 个答案:

答案 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
        ]
    ]
]);