使用表单数据 http 客户端 symfony 请求

Request using form data http client symfony

提问人:Bingo 提问时间:11/2/2023 更新时间:11/5/2023 访问量:42

问:

我的班级

private function request(string $url, string $method, array $options = [],string $token):    ResponseInterface
{
$endpoint = $_ENV['FILE_ENDPOINT'];

        $formData = new FormDataPart($options);
    
        $header = $formData->getPreparedHeaders();
        $header->addTextHeader('Authorization', "Bearer $token");
    
        return $this->httpClient->request(
            $method,
            $endpoint . $url,
            [
                'headers' => $header->toArray(),
                'body' => $formData->bodyToIterable(),
            ]
        );
    }     `

$options

enter image description here

The error I get

enter image description here

告诉我我做错了什么,以及如何解决这个问题或其他解决方案

symfony multipartform-data

评论


答:

0赞 Skuti 11/5/2023 #1

这里有一个关于它如何工作的示例。使用以下方法调整您的代码:

use Symfony\Component\Mime\Part\TextPart;
use Symfony\Component\Mime\Multipart\MultipartStream;
use Symfony\Component\Mime\Multipart\FormDataPart;

private function request(string $url, string $method, array $options = [], string $token): ResponseInterface
{
    $endpoint        = $_ENV['FILE_ENDPOINT'];
    $multipartStream = new MultipartStream();

    foreach ($options as $name => $value) {
        $multipartStream->addPart(new TextPart($value, 'form-data', ['name' => $name]));
    }

    $fileContents = 'Contenu du fichier'; // Remplacez cela par le contenu réel du fichier
    $formData = new FormDataPart($fileContents);
    $formData->headers->set('Content-Disposition', 'form-data; name="file"; filename="filename.txt"');
    $multipartStream->addPart($formData);

    $headers = [
        'Authorization' => "Bearer $token",
    ];

    return $this->httpClient->request(
        $method,
        $endpoint . $url,
        [
            'headers' => $headers,
            'body' => $multipartStream->toIterable(),
        ]
    );
}

评论

0赞 Bingo 11/7/2023
我的symfony版本是5.4,我没有Symfony\Component\Mime\Multipart\MultipartStream组件