2

ヘッダーやその他の情報なしで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"}は望ましい応答のみです。

または別のバンドルを使用してそうする他の方法、または PHP コードで直接 curl を使用する必要がありますか?

4

1 に答える 1

1

後世のために、ライブラリを Symfonyに注入するBuzzBundle小さな構成ファイルです。Buzz

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"}
于 2014-11-13T15:39:47.697 に答える