首页 > 解决方案 > 如何使用 Guzzle 发布包含文件字段的 json 数据?

问题描述

我正在尝试使用 Guzzle 将以下数据发送到 REST API

{
    "documents": {
        "id_proprietaire": 28,
        "nom_proprietaire": "rash",
        "prenom_proprietaire": "rash",
        "code_identification": "9LS9PB094MIL9CPL",
        "dossier_initial": "path_to_data"
    },
    "dossier_final": null
}

但我没有找到如何一起使用 multipart 和 json 请求。有人可以帮忙吗?

这就是我所做的,我收到了 404 bad request 错误字段文档是必需的

$httpClient = new Client();
$token = 'Token 7480ea9a692f98ad943e810820ced48aa09ca174';
$response =  $httpClient->post('http://127.0.0.1:8000/api_memoire/signed/', [
            'headers' => [
                'Authorization' => $token,
                'Accept'        => 'application/json',
            ],
            'multipart' => [
                [
                    'name' => 'documents',
                    'contents' => json_encode(
                        [
                            'id_proprietaire' => $id_demande,
                            'nom_proprietaire' => $demande->nom,
                            'prenom_proprietaire' => $demande->prenoms,
                            'code_identification' => $code,
                            'dossier_initial' => $document,
                        ]
                    ),
                ],
                [
                    'name' => 'dossier_final',
                    'contents' => null,
                ]
            ]
        ]);

标签: phplaravelguzzle

解决方案


您可以像这样通过 Guzzle 发送数据:

$httpClient = new Client();
$token = 'Token 7480ea9a692f98ad943e810820ced48aa09ca174';
$response =  $httpClient->post('http://127.0.0.1:8000/api_memoire/signed/', [
            'headers' => [
                'Authorization' => $token,
                'Accept'        => 'application/json',
            ],
            'form_params' => [
                'documents' => json_encode(
                        [
                            'id_proprietaire' => $id_demande,
                            'nom_proprietaire' => $demande->nom,
                            'prenom_proprietaire' => $demande->prenoms,
                            'code_identification' => $code,
                            'dossier_initial' => $document,
                        ]
                    ), 
                'dossier_final' => null
            ]
        ]);

此外,您可以在官方文档中阅读更多详细信息


推荐阅读