【问题标题】:Guzzle Not Sending Headers From Form MultiPartGuzzle 不从表单 MultiPart 发送标题
【发布时间】:2017-06-06 18:04:59
【问题描述】:

我正在使用"guzzlehttp/guzzle": "~6.0", 并尝试将文件发布到 API 端点。使用 RequestBin 时文件发布正常,但 API 未获取所需的标头。标头也不会发送到请求箱。根据文档,我需要做一个关联数组的数组。 http://docs.guzzlephp.org/en/latest/quickstart.html#post-form-requests

但是,这不起作用。这是 Guzzle 请求:

$client = new GuzzleHttp\Client(['base_uri' => '127.0.0.1:3000']);
        $response = $client->request('POST', '/process', [
            'multipart' => [
                [
                    'name'     => 'file',
                    'contents' => $file,
                    'bucketName' => 'test',
                    'headers'  => ['X-API-Key' => 'abc345']
                ],
            ]
        ]);

我做错了什么,它没有发送标头?

非常感谢,

乔什

【问题讨论】:

    标签: php laravel guzzle


    【解决方案1】:

    Headers 是一个 $option,这意味着它必须与 multipart 处于同一级别。

    <?php
          $response = $client->request('POST', '/process', [
            'multipart' => [
                [
                    'name' => 'file',
                    'contents' => 'test',
                    'bucketName' => 'test',
                ],
            ],
            'headers' => ['X-API-Key' => 'abc345'] // <------- HERE
        ]);
    

    【讨论】:

    • 文档特别说要把它放在多部分区域。另外,如果我按照您的建议进行操作,我会收到一个新错误,“A Contents key is a required”
    • 我们在谈论哪些标题?如果它是关于任何正文之前的 HTTP 标头 - 比我的回答是正确的。我检查了 TCPDUMP
    • 看看我在说什么:pastebin.com/iTRFWMsi 1 - 我的版本,2 - 你的。
    • 我确实弄错了括号。谢谢。
    • 文档让我抓狂了一段时间,看起来文档有问题,上面的方法对我有用。
    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    相关资源
    最近更新 更多