【问题标题】:error 406 with put request the laravel guzzle错误 406 请求 laravel guzzle
【发布时间】:2025-12-30 16:10:11
【问题描述】:

我需要有关 laravel 8 guzzle 的 put 请求的帮助。 我正在上传一个 zip 文件。 它返回错误 406。

使用邮递员可以正常工作。返回 200。 如果有人知道如何解决,请帮助我。

谢谢。

按照代码:

    $response = Http::withToken($token)->withHeaders([
        "Content-Type" => "application/json",
        "Accept" => "application/zip",
    ])->attach(
        'inputFile', $zip, 'zip'
    )->put($endPoint);

日志::alert($response); dd($response->status());

使用邮递员它工作正常,返回 200。这里:

【问题讨论】:

  • 邮递员正在发送Accept: */*。我认为您将AcceptContent-Type 混合在一起,Content-Type 是您发送的内容,Accept 是您愿意接受的回复

标签: laravel api http guzzle


【解决方案1】:

您不能将内容类型作为带有附加的应用程序/json 发送。 attach 用于多部分请求。它将请求的主体设置为 multipart/form-data 表单。

改成这个

$response = Http::withToken($token)->attach(
        'inputFile', $zip, 'zip'
    )->put($endPoint);

或者您可以删除整个标题部分。如果请求希望您将其他内容作为 json 与您的 zip 一起发送,则使用 guzzle 的原始语法添加该部分。

【讨论】: