GuzzleHttp отправляет запрос на сжатие с помощью gzip

Я использую GuzzleHttp с API REST. Мои параметры находятся в

$url_complete = 'http://apirest.com/?'.$params;
$request = $client->post(
    $url_complete,
);

Когда я ищу решение, я получаю только решения (http://guzzle3.readthedocs.org/http-client/entity-bodies.html) для объекта EntityBody. Но EntityBody — это ответ API. Мне не нужно читать сжатые данные, я должен их отправить.

Знаете ли вы способ отправки сжатых (с помощью gzip) данных в REST API с помощью GuzzleHttp?


person Samuel Dauzon    schedule 22.09.2015    source источник
comment
Вы ограничены использованием Guzzle 3 или у вас есть возможность перейти на Guzzle 6?   -  person Shaun Bramley    schedule 24.09.2015
comment
Да, я не могу использовать PHP 5.5 из-за ограничений системного администратора.   -  person Samuel Dauzon    schedule 24.09.2015


Ответы (1)


Чтобы процитировать ссылку № 1:

Тело объекта — это термин, используемый для тела HTTP-сообщения. Основная часть запросов и ответов по своей сути является потоком PHP в Guzzle.

Это означает, что объект EntityBody можно использовать с HTTP-запросами и ответами.

Сигнатура метода для Client::post()post($uri = null, $headers = null, $postBody = null, array $options = array()). Как видно из вашего фрагмента кода, вы не устанавливаете тело почтового запроса. На самом деле все, что вы делаете, это устанавливаете некоторые параметры запроса uri.

Основываясь на ссылках № 2, № 3 и № 4: вы, вероятно, захотите сделать что-то вроде:

$body = EntityBody::factory(fopen($file_location));
$body->compress(); //compresses the body using the deflate php stream filter

$request = $client->post($uri, $headers, $body, $options);

$response = $client->send($request);

Я должен заявить, что на самом деле я никогда этого не делал, я использовал v4+ большую часть последних 1,5 лет, и я не могу проверить это в данный момент.

Рекомендации:

  1. тела объектов
  2. Тела объектов — сжатие
  3. Использование объектов запроса — POST-запросы
  4. Guzzle 3 — Client.php
person Shaun Bramley    schedule 24.09.2015