Как я могу получить точное содержание от 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?
Для потомков 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"}
Других решений пока нет …