Zf2 - Как создать запрос к внешнему API с загрузкой файла - PullRequest
0 голосов
/ 14 мая 2018

У меня есть приложение Zf2, которое связывается с другим приложением Zf2 через вызовы RestAPI.

Я могу общаться между собой, используя следующий код и параметры обмена:

 //Prepare request
    $request = new Request();
    $request->getHeaders()->addHeaders(array(
        'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8'
    ));
    $request->setUri($p_url);
    $request->setMethod('POST');
    $request->setPost(new Parameters($p_params));


    $client = new Client();
    //Send request
    $client->resetParameters();
    $response = $client->dispatch($request);
    $data = json_decode($response->getBody(), true);

Теперь я хотел бы сделать то же самое, но с помощью составного вызова: Json + files.

Как я могу это сделать? Я пробовал несколько решений от использования метода setFileUpload клиента до записи параметров заголовков с типом содержимого (multipart / form-data), расположением содержимого, ... без успеха.

В ходе моих тестов я использовал Wireshark для проверки содержимого запроса. В зависимости от решения, которое я попробовал, у меня возникает ошибка с «отсутствующей границей» или ошибкой HTTP 405.

Спасибо за вашу помощь. Лучший

1 Ответ

0 голосов
/ 15 мая 2018

Наконец-то я нашел решение

$this->_client->setUri($p_url);
$this->_client->setMethod('POST');

//Prepare for upload
$this->_client->setFileUpload($p_file, 'file');

//Set parameters along with file
$this->_client->setParameterPost($p_params);

//Send request
try {
    $response = $this->_client->send();
} catch ( \Exception $ex ) {

}
...