symfony2 Получить точный контент из ответа BuzzBundle

Как я могу получить точное содержание от BuzzBundle без заголовка или другой информации

в настоящее время я использую,

 $buzz = $this->container->get('buzz');
$response = $buzz->get('http://api.ipify.org?format=json');
echo $response;

и вывод есть,

HTTP/1.1 200 OK Server: Cowboy Connection: close Access-Control-Allow-Origin: * Content-Type: text/plain Date: Thu, 13 Nov 2014 14:51:40 GMT Content-Length: 14 Via: 1.1 vegur {"ip":"54.254.210.209"}

только здесь {"ip":"111.20.67.90"} желаемый ответ.

или любой другой способ сделать это, с другим пакетом, или я должен использовать curl непосредственно в коде PHP?

2

Решение

Для потомков BuzzBundle это просто небольшой файл конфигурации, который вводит Buzz библиотека в Symfony.

Когда вы используете get() метод Browser, он возвращает экземпляр call() с возвращаемое значение MessageInterface… так давайте рассмотрим этот файл:

/**
* Returns the message document.
*
* @return string The message
*/
public function __toString();

Это просто эквивалент файла заголовка, если вы знакомы с C++, но ясно, что __toString() Файл возвращает полное сообщение, включая заголовки. Так что, если мы просмотрим оставшуюся часть этого файла, мы обнаружим, что есть еще одна функция, которая получает то, что вы хотите:

/**
* Returns the content of the message.
*
* @return string The message content
*/
public function getContent();

Так что если вы относитесь к MessageInterface как объект вместо того, чтобы пытаться получить к нему доступ в виде строки (которая дает вам по умолчанию __toString()), этот код вы бы использовали:

$buzz = $this->container->get('buzz');
$response = $buzz->get('http://api.ipify.org?format=json');
echo $response->getContent(); // output: {"ip":"54.254.210.209"}
1

Другие решения

Других решений пока нет …