использование php guzzle для PUT с потоком и параметрами - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь выяснить, как реализовать следующий REST PUT с помощью Guzzle.Я пытался использовать multipart и json, но я не уверен, какой должен быть синтаксис для параметров с потоковым xml-файлом.

Может кто-нибудь помочь мне перевести это в правильный запрос?Ниже приведено то, что я пробовал до сих пор, но он возвращает ошибку, потому что он говорит, что ProjectXML должен быть включен.

$newUri = sprintf('%s/projects/%s/storage', $api_base, $testPid);
$newResp = $client->put($newUri,
    [
        'headers'         => [
            'Authorization' => sprintf("HubApi %s", $api_key),
        ],
        'multipart' => [
            [
                'name'     => 'ProjectXml',
                'contents' => file_get_contents("xml/$testPid.xml")
            ],
            [
                'name' => 'ProjectId',
                'contents' => $testPid
            ],
            [
                'name' => 'HubUserId',
                'contents' => "xxxxxxx-xxxxx-xxxx-xxxxx-xxxxxxxx"
            ],
            [
                'name' => 'ProductId',
                'contents' => "$(package:ourcompany/ourproducttype)/products/ProductABC123"
            ],
            [
                'name' => 'ThemeUrl',
                'contents' => "$(package:ourcompany/ourproducttype)/themes/themename-white-Classic"
            ],

        ]
    ]
);

Ответ:

`400 Bad Request - Validation Error` response:
{"code":"RequestValidationError","message":"'Project Xml' should not be empty."}
...