Ошибка преобразования из cURL в Guzzle 6 с использованием файлов JSON и XML - PullRequest
0 голосов
/ 02 марта 2019

С трудом переводя cURL в Guzzle6.Я хочу отправить имя и ссылку на UUID через JSON И содержимое файла XML для обработки в конечную точку REST.

cURL

curl -H 'Expect:' -F 
'request={"name":"test", "reference":"870e0320-021e-4c67-9169-d4b2c7e5b9c9"}' 
-F 'file=@sample.xml' http://ec2-48-88-173-9.us-east-1.compute.amazonaws.com:8180/rs/process

Жрать

$client = new Client(['debug' => true]);

$request = $client->request('POST',
    'http://ec2-48-88-173-9.us-east-1.compute.amazonaws.com:8180/rs/process', [
        'multipart' => [
            [
                'name' => 'data',
                'contents' => "{'name':'test','reference':870e0320-021e-4c67-9169-d4b2c7e5b9c9}",
                'headers' => ['Content-Type' => 'application/json']
            ],
            [
                'name' => 'file',
                'contents' => fopen('sample.xml', 'r'),
                'headers' => ['Content-Type' => 'text/xml']
            ],
        ]
    ]
);

$response = $request->getBody()->getContents();

Кроме того, я не уверен, какими должны быть поля 'name' ('name' => 'data') и т. Д.

1 Ответ

0 голосов
/ 02 марта 2019

Это эквивалент Guzzle вашей команды curl:

$client = new Client(['debug' => true]);

$request = $client->request('POST',
    'http://ec2-48-88-173-9.us-east-1.compute.amazonaws.com:8180/rs/process', [
        'multipart' => [
            [
                'name' => 'request',
                'contents' => "{'name':'test','reference':870e0320-021e-4c67-9169-d4b2c7e5b9c9}",
            ],
            [
                'name' => 'file',
                'contents' => fopen('sample.xml', 'r'),
            ],
        ]
    ]
);

$response = $request->getBody()->getContents();

Для file Guzzle будет указывать соответствующий тип содержимого, как делает curl.Имя для первой части: request - от -F 'request={"name":"test", "reference":"870e0320-021e-4c67-9169-d4b2c7e5b9c9"}'

...