|
@@ -1,11 +1,12 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<!-- Reviewed: no -->
|
|
<!-- Reviewed: no -->
|
|
|
-<!-- EN-Revision: 20115 -->
|
|
|
|
|
|
|
+<!-- EN-Revision: 21145 -->
|
|
|
<sect1 id="zend.http.client.adapters">
|
|
<sect1 id="zend.http.client.adapters">
|
|
|
<title>Zend_Http_Client - 接続アダプタ</title>
|
|
<title>Zend_Http_Client - 接続アダプタ</title>
|
|
|
|
|
|
|
|
<sect2 id="zend.http.client.adapters.overview">
|
|
<sect2 id="zend.http.client.adapters.overview">
|
|
|
<title>概要</title>
|
|
<title>概要</title>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
<classname>Zend_Http_Client</classname> は、接続アダプタとして設計されています。
|
|
<classname>Zend_Http_Client</classname> は、接続アダプタとして設計されています。
|
|
|
接続アダプタは実際にサーバへの接続を行うオブジェクトで、
|
|
接続アダプタは実際にサーバへの接続を行うオブジェクトで、
|
|
@@ -15,6 +16,7 @@
|
|
|
<acronym>HTTP</acronym> クライアントクラス全体を書き換える必要はありません。
|
|
<acronym>HTTP</acronym> クライアントクラス全体を書き換える必要はありません。
|
|
|
同じインターフェイスを実装しているだけでいいのです。
|
|
同じインターフェイスを実装しているだけでいいのです。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
現在、<classname>Zend_Http_Client</classname> クラスは四つの組み込み接続アダプタを提供しています。
|
|
現在、<classname>Zend_Http_Client</classname> クラスは四つの組み込み接続アダプタを提供しています。
|
|
|
<itemizedlist>
|
|
<itemizedlist>
|
|
@@ -23,16 +25,19 @@
|
|
|
<classname>Zend_Http_Client_Adapter_Socket</classname> (デフォルト)
|
|
<classname>Zend_Http_Client_Adapter_Socket</classname> (デフォルト)
|
|
|
</para>
|
|
</para>
|
|
|
</listitem>
|
|
</listitem>
|
|
|
|
|
+
|
|
|
<listitem>
|
|
<listitem>
|
|
|
<para>
|
|
<para>
|
|
|
<classname>Zend_Http_Client_Adapter_Proxy</classname>
|
|
<classname>Zend_Http_Client_Adapter_Proxy</classname>
|
|
|
</para>
|
|
</para>
|
|
|
</listitem>
|
|
</listitem>
|
|
|
|
|
+
|
|
|
<listitem>
|
|
<listitem>
|
|
|
<para>
|
|
<para>
|
|
|
<classname>Zend_Http_Client_Adapter_Curl</classname>
|
|
<classname>Zend_Http_Client_Adapter_Curl</classname>
|
|
|
</para>
|
|
</para>
|
|
|
</listitem>
|
|
</listitem>
|
|
|
|
|
+
|
|
|
<listitem>
|
|
<listitem>
|
|
|
<para>
|
|
<para>
|
|
|
<classname>Zend_Http_Client_Adapter_Test</classname>
|
|
<classname>Zend_Http_Client_Adapter_Test</classname>
|
|
@@ -40,6 +45,7 @@
|
|
|
</listitem>
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
</itemizedlist>
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
<classname>Zend_Http_Client</classname> オブジェクトの接続アダプタを指定するには、
|
|
<classname>Zend_Http_Client</classname> オブジェクトの接続アダプタを指定するには、
|
|
|
設定オプション 'adapter' を使用します。
|
|
設定オプション 'adapter' を使用します。
|
|
@@ -54,18 +60,22 @@
|
|
|
|
|
|
|
|
<sect2 id="zend.http.client.adapters.socket">
|
|
<sect2 id="zend.http.client.adapters.socket">
|
|
|
<title>ソケットアダプタ</title>
|
|
<title>ソケットアダプタ</title>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
デフォルトの接続アダプタは <classname>Zend_Http_Client_Adapter_Socket</classname>
|
|
デフォルトの接続アダプタは <classname>Zend_Http_Client_Adapter_Socket</classname>
|
|
|
です。明示的に接続アダプタを指定しない場合は、これが使用されます。
|
|
です。明示的に接続アダプタを指定しない場合は、これが使用されます。
|
|
|
Socket アダプタは <acronym>PHP</acronym> の組み込み関数 fsockopen()
|
|
Socket アダプタは <acronym>PHP</acronym> の組み込み関数 fsockopen()
|
|
|
を使用しており、特別な拡張モジュールやコンパイルオプションは必要ありません。
|
|
を使用しており、特別な拡張モジュールやコンパイルオプションは必要ありません。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
ソケットアダプタには、追加の設定オプションを指定できます。これは
|
|
ソケットアダプタには、追加の設定オプションを指定できます。これは
|
|
|
<classname>Zend_Http_Client->setConfig()</classname> で指定するか、
|
|
<classname>Zend_Http_Client->setConfig()</classname> で指定するか、
|
|
|
あるいはクライアントのコンストラクタに渡します。
|
|
あるいはクライアントのコンストラクタに渡します。
|
|
|
|
|
+
|
|
|
<table id="zend.http.client.adapter.socket.configuration.table">
|
|
<table id="zend.http.client.adapter.socket.configuration.table">
|
|
|
<title>Zend_Http_Client_Adapter_Socket の設定パラメータ</title>
|
|
<title>Zend_Http_Client_Adapter_Socket の設定パラメータ</title>
|
|
|
|
|
+
|
|
|
<tgroup cols="4">
|
|
<tgroup cols="4">
|
|
|
<thead>
|
|
<thead>
|
|
|
<row>
|
|
<row>
|
|
@@ -75,43 +85,74 @@
|
|
|
<entry>デフォルト値</entry>
|
|
<entry>デフォルト値</entry>
|
|
|
</row>
|
|
</row>
|
|
|
</thead>
|
|
</thead>
|
|
|
|
|
+
|
|
|
<tbody>
|
|
<tbody>
|
|
|
<row>
|
|
<row>
|
|
|
<entry>persistent</entry>
|
|
<entry>persistent</entry>
|
|
|
- <entry>持続的な <acronym>TCP</acronym> 接続を使用するかどうか</entry>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <entry>
|
|
|
|
|
+ 持続的な <acronym>TCP</acronym> 接続を使用するかどうか
|
|
|
|
|
+ </entry>
|
|
|
|
|
+
|
|
|
<entry>boolean</entry>
|
|
<entry>boolean</entry>
|
|
|
<entry><constant>FALSE</constant></entry>
|
|
<entry><constant>FALSE</constant></entry>
|
|
|
</row>
|
|
</row>
|
|
|
|
|
+
|
|
|
<row>
|
|
<row>
|
|
|
<entry>ssltransport</entry>
|
|
<entry>ssltransport</entry>
|
|
|
<entry><acronym>SSL</acronym> トランスポート層 (たとえば 'sslv2'、'tls')</entry>
|
|
<entry><acronym>SSL</acronym> トランスポート層 (たとえば 'sslv2'、'tls')</entry>
|
|
|
<entry>文字列</entry>
|
|
<entry>文字列</entry>
|
|
|
<entry>ssl</entry>
|
|
<entry>ssl</entry>
|
|
|
</row>
|
|
</row>
|
|
|
|
|
+
|
|
|
<row>
|
|
<row>
|
|
|
<entry>sslcert</entry>
|
|
<entry>sslcert</entry>
|
|
|
- <entry><acronym>PEM</acronym> でエンコードした、<acronym>SSL</acronym> 証明書ファイルへのパス</entry>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <entry>
|
|
|
|
|
+ <acronym>PEM</acronym> でエンコードした、<acronym>SSL</acronym> 証明書ファイルへのパス
|
|
|
|
|
+ </entry>
|
|
|
|
|
+
|
|
|
<entry>文字列</entry>
|
|
<entry>文字列</entry>
|
|
|
<entry><constant>NULL</constant></entry>
|
|
<entry><constant>NULL</constant></entry>
|
|
|
</row>
|
|
</row>
|
|
|
|
|
+
|
|
|
<row>
|
|
<row>
|
|
|
<entry>sslpassphrase</entry>
|
|
<entry>sslpassphrase</entry>
|
|
|
- <entry><acronym>SSL</acronym> 証明書ファイルのパスフレーズ</entry>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <entry>
|
|
|
|
|
+ <acronym>SSL</acronym> 証明書ファイルのパスフレーズ
|
|
|
|
|
+ </entry>
|
|
|
|
|
+
|
|
|
<entry>文字列</entry>
|
|
<entry>文字列</entry>
|
|
|
<entry><constant>NULL</constant></entry>
|
|
<entry><constant>NULL</constant></entry>
|
|
|
</row>
|
|
</row>
|
|
|
|
|
+
|
|
|
|
|
+ <row>
|
|
|
|
|
+ <entry>sslusecontext</entry>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- TODO : to be translated -->
|
|
|
|
|
+ <entry>
|
|
|
|
|
+ Enables proxied connections to use SSL even if
|
|
|
|
|
+ the proxy connection itself does not.
|
|
|
|
|
+ </entry>
|
|
|
|
|
+
|
|
|
|
|
+ <entry>boolean</entry>
|
|
|
|
|
+ <entry><constant>FALSE</constant></entry>
|
|
|
|
|
+ </row>
|
|
|
</tbody>
|
|
</tbody>
|
|
|
</tgroup>
|
|
</tgroup>
|
|
|
</table>
|
|
</table>
|
|
|
|
|
|
|
|
<note>
|
|
<note>
|
|
|
<title>持続的な TCP 接続</title>
|
|
<title>持続的な TCP 接続</title>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
持続的な <acronym>TCP</acronym> 接続を使用すると、<acronym>HTTP</acronym>
|
|
持続的な <acronym>TCP</acronym> 接続を使用すると、<acronym>HTTP</acronym>
|
|
|
リクエストの処理速度が向上する可能性があります。
|
|
リクエストの処理速度が向上する可能性があります。
|
|
|
しかし、たいていの場合はその効果はごくわずかで、
|
|
しかし、たいていの場合はその効果はごくわずかで、
|
|
|
接続先の <acronym>HTTP</acronym> サーバにかかる負荷が大きくなります。
|
|
接続先の <acronym>HTTP</acronym> サーバにかかる負荷が大きくなります。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
持続的な <acronym>TCP</acronym> 接続を使用するのは、
|
|
持続的な <acronym>TCP</acronym> 接続を使用するのは、
|
|
|
同じサーバに頻繁に接続する場合で
|
|
同じサーバに頻繁に接続する場合で
|
|
@@ -119,6 +160,7 @@
|
|
|
いずれにせよ、このオプションを使用する前には
|
|
いずれにせよ、このオプションを使用する前には
|
|
|
クライアント側の速度だけでなくサーバ側の負荷についてもベンチマークをとるようにしましょう。
|
|
クライアント側の速度だけでなくサーバ側の負荷についてもベンチマークをとるようにしましょう。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
さらに、持続的な接続を使用するときには
|
|
さらに、持続的な接続を使用するときには
|
|
|
<xref linkend="zend.http.client.configuration" />
|
|
<xref linkend="zend.http.client.configuration" />
|
|
@@ -129,22 +171,27 @@
|
|
|
|
|
|
|
|
<note>
|
|
<note>
|
|
|
<title>HTTPS SSL ストリームパラメータ</title>
|
|
<title>HTTPS SSL ストリームパラメータ</title>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
<code>ssltransport, sslcert</code> および <code>sslpassphrase</code>
|
|
<code>ssltransport, sslcert</code> および <code>sslpassphrase</code>
|
|
|
は、<acronym>HTTPS</acronym> 接続で使用する <acronym>SSL</acronym> レイヤーにのみ関連するものです。
|
|
は、<acronym>HTTPS</acronym> 接続で使用する <acronym>SSL</acronym> レイヤーにのみ関連するものです。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
たいていの場合はデフォルトの <acronym>SSL</acronym> 設定でうまく動作するでしょうが、
|
|
たいていの場合はデフォルトの <acronym>SSL</acronym> 設定でうまく動作するでしょうが、
|
|
|
接続先のサーバが特別なクライアント設定を要求している場合は
|
|
接続先のサーバが特別なクライアント設定を要求している場合は
|
|
|
それにあわせた設定をする必要があるかもしれません。
|
|
それにあわせた設定をする必要があるかもしれません。
|
|
|
その場合は、
|
|
その場合は、
|
|
|
- <ulink url="http://www.php.net/manual/ja/transports.php#transports.inet">ここ</ulink>
|
|
|
|
|
|
|
+ <ulink
|
|
|
|
|
+ url="http://www.php.net/manual/ja/transports.php#transports.inet">ここ</ulink>
|
|
|
で <acronym>SSL</acronym> トランスポート層やオプションについての説明を参照ください。
|
|
で <acronym>SSL</acronym> トランスポート層やオプションについての説明を参照ください。
|
|
|
</para>
|
|
</para>
|
|
|
</note>
|
|
</note>
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<example id="zend.http.client.adapters.socket.example-1">
|
|
<example id="zend.http.client.adapters.socket.example-1">
|
|
|
<title>HTTPS トランスポート層の変更</title>
|
|
<title>HTTPS トランスポート層の変更</title>
|
|
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
<programlisting language="php"><![CDATA[
|
|
|
// 設定パラメータを指定します
|
|
// 設定パラメータを指定します
|
|
|
$config = array(
|
|
$config = array(
|
|
@@ -159,20 +206,23 @@ $client = new Zend_Http_Client('https://www.example.com', $config);
|
|
|
$response = $client->request();
|
|
$response = $client->request();
|
|
|
]]></programlisting>
|
|
]]></programlisting>
|
|
|
</example>
|
|
</example>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
上の例の結果は、次の <acronym>PHP</acronym> コマンドで <acronym>TCP</acronym>
|
|
上の例の結果は、次の <acronym>PHP</acronym> コマンドで <acronym>TCP</acronym>
|
|
|
接続をオープンした場合と同じになります。
|
|
接続をオープンした場合と同じになります。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
<methodname>fsockopen('tls://www.example.com', 443)</methodname>
|
|
<methodname>fsockopen('tls://www.example.com', 443)</methodname>
|
|
|
</para>
|
|
</para>
|
|
|
|
|
|
|
|
<sect3 id="zend.http.client.adapters.socket.streamcontext">
|
|
<sect3 id="zend.http.client.adapters.socket.streamcontext">
|
|
|
<title>ソケットアダプタのストリームコンテキストへのアクセスとカスタマイズ</title>
|
|
<title>ソケットアダプタのストリームコンテキストへのアクセスとカスタマイズ</title>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
Zend Framework 1.9 以降、<classname>Zend_Http_Client_Adapter_Socket</classname>
|
|
Zend Framework 1.9 以降、<classname>Zend_Http_Client_Adapter_Socket</classname>
|
|
|
- は、リモートサーバへの接続に使用している
|
|
|
|
|
- <ulink url="http://www.php.net/manual/ja/stream.contexts.php">ストリームコンテキスト</ulink>
|
|
|
|
|
|
|
+ は、リモートサーバへの接続に使用している <ulink
|
|
|
|
|
+ url="http://www.php.net/manual/ja/stream.contexts.php">ストリームコンテキスト</ulink>
|
|
|
に直接アクセスできるようになります。これを使用すると、
|
|
に直接アクセスできるようになります。これを使用すると、
|
|
|
<acronym>TCP</acronym> ストリーム (<acronym>HTTPS</acronym> 接続の場合は <acronym>SSL</acronym> ラッパー)
|
|
<acronym>TCP</acronym> ストリーム (<acronym>HTTPS</acronym> 接続の場合は <acronym>SSL</acronym> ラッパー)
|
|
|
固有のオプションやパラメータを渡せるようになります。
|
|
固有のオプションやパラメータを渡せるようになります。
|
|
@@ -182,19 +232,21 @@ $response = $client->request();
|
|
|
ストリームコンテキストにアクセスするには、
|
|
ストリームコンテキストにアクセスするには、
|
|
|
<classname>Zend_Http_Client_Adapter_Socket</classname>
|
|
<classname>Zend_Http_Client_Adapter_Socket</classname>
|
|
|
のこれらのメソッドを使用します。
|
|
のこれらのメソッドを使用します。
|
|
|
|
|
+
|
|
|
<itemizedlist>
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
<listitem>
|
|
|
<para>
|
|
<para>
|
|
|
<firstterm><methodname>setStreamContext($context)</methodname></firstterm>
|
|
<firstterm><methodname>setStreamContext($context)</methodname></firstterm>
|
|
|
アダプタが使用するストリームコンテキストを設定します。
|
|
アダプタが使用するストリームコンテキストを設定します。
|
|
|
- <acronym>PHP</acronym> の
|
|
|
|
|
- <ulink url="http://php.net/manual/ja/function.stream-context-create.php"><methodname>stream_context_create()</methodname></ulink>
|
|
|
|
|
|
|
+ <acronym>PHP</acronym> の <ulink
|
|
|
|
|
+ url="http://php.net/manual/ja/function.stream-context-create.php"><methodname>stream_context_create()</methodname></ulink>
|
|
|
関数で作成したストリームコンテキストリソースか、
|
|
関数で作成したストリームコンテキストリソースか、
|
|
|
この関数に渡すのと同じ形式のストリームコンテキストオプションの配列のいずれかを指定できます。
|
|
この関数に渡すのと同じ形式のストリームコンテキストオプションの配列のいずれかを指定できます。
|
|
|
配列を渡すと、そのオプションを用いて新たなストリームコンテキストを作成し、
|
|
配列を渡すと、そのオプションを用いて新たなストリームコンテキストを作成し、
|
|
|
それを設定します。
|
|
それを設定します。
|
|
|
</para>
|
|
</para>
|
|
|
</listitem>
|
|
</listitem>
|
|
|
|
|
+
|
|
|
<listitem>
|
|
<listitem>
|
|
|
<para>
|
|
<para>
|
|
|
<firstterm><methodname>getStreamContext()</methodname></firstterm>
|
|
<firstterm><methodname>getStreamContext()</methodname></firstterm>
|
|
@@ -207,9 +259,11 @@ $response = $client->request();
|
|
|
</listitem>
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
</itemizedlist>
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<example id="zend.http.client.adapters.socket.streamcontext.example-1">
|
|
<example id="zend.http.client.adapters.socket.streamcontext.example-1">
|
|
|
- <title>ソケットアダプタのストリームコンテキストオプションの設定</title>
|
|
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
|
|
|
|
+ <title>ソケットアダプタのストリームコンテキストオプションの設定</title>
|
|
|
|
|
+
|
|
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
// オプションの配列
|
|
// オプションの配列
|
|
|
$options = array(
|
|
$options = array(
|
|
|
'socket' => array(
|
|
'socket' => array(
|
|
@@ -250,23 +304,24 @@ $response = $client->request();
|
|
|
$opts = stream_context_get_options($adapter->getStreamContext());
|
|
$opts = stream_context_get_options($adapter->getStreamContext());
|
|
|
echo $opts['ssl']['peer_certificate'];
|
|
echo $opts['ssl']['peer_certificate'];
|
|
|
]]></programlisting>
|
|
]]></programlisting>
|
|
|
- </example>
|
|
|
|
|
|
|
+ </example>
|
|
|
|
|
|
|
|
- <note>
|
|
|
|
|
- <para>
|
|
|
|
|
- ストリームコンテキストのオプションは、
|
|
|
|
|
- アダプタが実際にリクエストを処理しだす前に設定しなければならないことに注意しましょう。
|
|
|
|
|
- コンテキストを設定せずにソケットアダプタで <acronym>HTTP</acronym> リクエストを処理すると、
|
|
|
|
|
- デフォルトのストリームコンテキストが作成されます。
|
|
|
|
|
- リクエストを処理した後にこのコンテキストリソースにアクセスするには
|
|
|
|
|
- <methodname>getStreamContext()</methodname> メソッドを使用します。
|
|
|
|
|
- </para>
|
|
|
|
|
- </note>
|
|
|
|
|
|
|
+ <note>
|
|
|
|
|
+ <para>
|
|
|
|
|
+ ストリームコンテキストのオプションは、
|
|
|
|
|
+ アダプタが実際にリクエストを処理しだす前に設定しなければならないことに注意しましょう。
|
|
|
|
|
+ コンテキストを設定せずにソケットアダプタで <acronym>HTTP</acronym> リクエストを処理すると、
|
|
|
|
|
+ デフォルトのストリームコンテキストが作成されます。
|
|
|
|
|
+ リクエストを処理した後にこのコンテキストリソースにアクセスするには
|
|
|
|
|
+ <methodname>getStreamContext()</methodname> メソッドを使用します。
|
|
|
|
|
+ </para>
|
|
|
|
|
+ </note>
|
|
|
</sect3>
|
|
</sect3>
|
|
|
</sect2>
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2 id="zend.http.client.adapters.proxy">
|
|
<sect2 id="zend.http.client.adapters.proxy">
|
|
|
<title>プロキシアダプタ</title>
|
|
<title>プロキシアダプタ</title>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
<classname>Zend_Http_Client_Adapter_Proxy</classname> アダプタはデフォルトのソケットアダプタとほぼ同じです。
|
|
<classname>Zend_Http_Client_Adapter_Proxy</classname> アダプタはデフォルトのソケットアダプタとほぼ同じです。
|
|
|
ただし、対象となるサーバに直接接続するのではなく
|
|
ただし、対象となるサーバに直接接続するのではなく
|
|
@@ -279,8 +334,10 @@ echo $opts['ssl']['peer_certificate'];
|
|
|
プロキシアダプタを使用するには、
|
|
プロキシアダプタを使用するには、
|
|
|
デフォルトの 'adapter' オプション以外に
|
|
デフォルトの 'adapter' オプション以外に
|
|
|
いくつか追加のパラメータを設定する必要があります。
|
|
いくつか追加のパラメータを設定する必要があります。
|
|
|
|
|
+
|
|
|
<table id="zend.http.client.adapters.proxy.table">
|
|
<table id="zend.http.client.adapters.proxy.table">
|
|
|
<title>Zend_Http_Client の設定パラメータ</title>
|
|
<title>Zend_Http_Client の設定パラメータ</title>
|
|
|
|
|
+
|
|
|
<tgroup cols="4">
|
|
<tgroup cols="4">
|
|
|
<thead>
|
|
<thead>
|
|
|
<row>
|
|
<row>
|
|
@@ -290,6 +347,7 @@ echo $opts['ssl']['peer_certificate'];
|
|
|
<entry>値の例</entry>
|
|
<entry>値の例</entry>
|
|
|
</row>
|
|
</row>
|
|
|
</thead>
|
|
</thead>
|
|
|
|
|
+
|
|
|
<tbody>
|
|
<tbody>
|
|
|
<row>
|
|
<row>
|
|
|
<entry>proxy_host</entry>
|
|
<entry>proxy_host</entry>
|
|
@@ -297,24 +355,28 @@ echo $opts['ssl']['peer_certificate'];
|
|
|
<entry>string</entry>
|
|
<entry>string</entry>
|
|
|
<entry>'proxy.myhost.com' あるいは '10.1.2.3'</entry>
|
|
<entry>'proxy.myhost.com' あるいは '10.1.2.3'</entry>
|
|
|
</row>
|
|
</row>
|
|
|
|
|
+
|
|
|
<row>
|
|
<row>
|
|
|
<entry>proxy_port</entry>
|
|
<entry>proxy_port</entry>
|
|
|
<entry>プロキシサーバの <acronym>TCP</acronym> ポート</entry>
|
|
<entry>プロキシサーバの <acronym>TCP</acronym> ポート</entry>
|
|
|
<entry>integer</entry>
|
|
<entry>integer</entry>
|
|
|
<entry>8080 (デフォルト) あるいは 81</entry>
|
|
<entry>8080 (デフォルト) あるいは 81</entry>
|
|
|
</row>
|
|
</row>
|
|
|
|
|
+
|
|
|
<row>
|
|
<row>
|
|
|
<entry>proxy_user</entry>
|
|
<entry>proxy_user</entry>
|
|
|
<entry>必要に応じて、プロキシのユーザ名</entry>
|
|
<entry>必要に応じて、プロキシのユーザ名</entry>
|
|
|
<entry>string</entry>
|
|
<entry>string</entry>
|
|
|
<entry>'shahar' あるいは指定しない場合は '' (デフォルト)</entry>
|
|
<entry>'shahar' あるいは指定しない場合は '' (デフォルト)</entry>
|
|
|
</row>
|
|
</row>
|
|
|
|
|
+
|
|
|
<row>
|
|
<row>
|
|
|
<entry>proxy_pass</entry>
|
|
<entry>proxy_pass</entry>
|
|
|
<entry>必要に応じて、プロキシのパスワード</entry>
|
|
<entry>必要に応じて、プロキシのパスワード</entry>
|
|
|
<entry>string</entry>
|
|
<entry>string</entry>
|
|
|
<entry>'secret' あるいは指定しない場合は '' (デフォルト)</entry>
|
|
<entry>'secret' あるいは指定しない場合は '' (デフォルト)</entry>
|
|
|
</row>
|
|
</row>
|
|
|
|
|
+
|
|
|
<row>
|
|
<row>
|
|
|
<entry>proxy_auth</entry>
|
|
<entry>proxy_auth</entry>
|
|
|
<entry>プロキシの <acronym>HTTP</acronym> 認証形式</entry>
|
|
<entry>プロキシの <acronym>HTTP</acronym> 認証形式</entry>
|
|
@@ -325,12 +387,14 @@ echo $opts['ssl']['peer_certificate'];
|
|
|
</tgroup>
|
|
</tgroup>
|
|
|
</table>
|
|
</table>
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
proxy_host は常に設定しなければなりません。指定しなかった場合は、
|
|
proxy_host は常に設定しなければなりません。指定しなかった場合は、
|
|
|
自動的に <classname>Zend_Http_Client_Adapter_Socket</classname> による直接接続に切り替わります。
|
|
自動的に <classname>Zend_Http_Client_Adapter_Socket</classname> による直接接続に切り替わります。
|
|
|
proxy_port のデフォルトは '8080' です。もし別のポートをプロキシで使用している場合は、
|
|
proxy_port のデフォルトは '8080' です。もし別のポートをプロキシで使用している場合は、
|
|
|
適切に設定する必要があります。
|
|
適切に設定する必要があります。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
proxy_user および proxy_pass は、
|
|
proxy_user および proxy_pass は、
|
|
|
プロキシサーバが認証を必要とする場合にのみ設定します。
|
|
プロキシサーバが認証を必要とする場合にのみ設定します。
|
|
@@ -338,14 +402,17 @@ echo $opts['ssl']['peer_certificate'];
|
|
|
ヘッダがリクエストに追加されます。プロキシで認証を必要としない場合は、
|
|
ヘッダがリクエストに追加されます。プロキシで認証を必要としない場合は、
|
|
|
このふたつのオプションはそのままにしておきます。
|
|
このふたつのオプションはそのままにしておきます。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
proxy_auth は、プロキシが認証を必要としている場合に、
|
|
proxy_auth は、プロキシが認証を必要としている場合に、
|
|
|
その認証形式を指定します。設定できる値は
|
|
その認証形式を指定します。設定できる値は
|
|
|
Zend_Http_Client::setAuth() メソッドと同じです。現在はベーシック認証
|
|
Zend_Http_Client::setAuth() メソッドと同じです。現在はベーシック認証
|
|
|
(Zend_Http_Client::AUTH_BASIC) のみをサポートしています。
|
|
(Zend_Http_Client::AUTH_BASIC) のみをサポートしています。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<example id="zend.http.client.adapters.proxy.example-1">
|
|
<example id="zend.http.client.adapters.proxy.example-1">
|
|
|
<title>プロキシサーバを使用した Zend_Http_Client の使用法</title>
|
|
<title>プロキシサーバを使用した Zend_Http_Client の使用法</title>
|
|
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
<programlisting language="php"><![CDATA[
|
|
|
// 接続パラメータを設定します
|
|
// 接続パラメータを設定します
|
|
|
$config = array(
|
|
$config = array(
|
|
@@ -362,6 +429,7 @@ $client = new Zend_Http_Client('http://www.example.com', $config);
|
|
|
// 作業を続けます...
|
|
// 作業を続けます...
|
|
|
]]></programlisting>
|
|
]]></programlisting>
|
|
|
</example>
|
|
</example>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
説明したとおり、もし proxy_host を省略したり空文字列を設定したりすると、
|
|
説明したとおり、もし proxy_host を省略したり空文字列を設定したりすると、
|
|
|
自動的に直接接続に切り替わります。これにより、設定パラメータによって
|
|
自動的に直接接続に切り替わります。これにより、設定パラメータによって
|
|
@@ -381,6 +449,7 @@ $client = new Zend_Http_Client('http://www.example.com', $config);
|
|
|
|
|
|
|
|
<sect2 id="zend.http.client.adapters.curl">
|
|
<sect2 id="zend.http.client.adapters.curl">
|
|
|
<title>cURL アダプタ</title>
|
|
<title>cURL アダプタ</title>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
cURL は標準的な <acronym>HTTP</acronym> クライアントライブラリで、
|
|
cURL は標準的な <acronym>HTTP</acronym> クライアントライブラリで、
|
|
|
多くの OS に含まれています。また <acronym>PHP</acronym> からは cURL
|
|
多くの OS に含まれています。また <acronym>PHP</acronym> からは cURL
|
|
@@ -393,6 +462,7 @@ $client = new Zend_Http_Client('http://www.example.com', $config);
|
|
|
|
|
|
|
|
<example id="zend.http.client.adapters.curl.example-1">
|
|
<example id="zend.http.client.adapters.curl.example-1">
|
|
|
<title>cURL オプションの設定</title>
|
|
<title>cURL オプションの設定</title>
|
|
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
<programlisting language="php"><![CDATA[
|
|
|
$config = array(
|
|
$config = array(
|
|
|
'adapter' => 'Zend_Http_Client_Adapter_Curl',
|
|
'adapter' => 'Zend_Http_Client_Adapter_Curl',
|
|
@@ -441,17 +511,20 @@ $client->request("PUT");
|
|
|
|
|
|
|
|
<sect2 id="zend.http.client.adapters.test">
|
|
<sect2 id="zend.http.client.adapters.test">
|
|
|
<title>テストアダプタ</title>
|
|
<title>テストアダプタ</title>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
<acronym>HTTP</acronym> 接続に依存するテストコードを書くのは非常に難しいものです。
|
|
<acronym>HTTP</acronym> 接続に依存するテストコードを書くのは非常に難しいものです。
|
|
|
たとえば、リモートサーバから <acronym>RSS</acronym> を取得するアプリケーションをテストするには、
|
|
たとえば、リモートサーバから <acronym>RSS</acronym> を取得するアプリケーションをテストするには、
|
|
|
ネットワークにつながっている必要があります。常にネットワークが使用できるとは限りません。
|
|
ネットワークにつながっている必要があります。常にネットワークが使用できるとは限りません。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
このようなときのためにあるのが <classname>Zend_Http_Client_Adapter_Test</classname> アダプタです。
|
|
このようなときのためにあるのが <classname>Zend_Http_Client_Adapter_Test</classname> アダプタです。
|
|
|
<classname>Zend_Http_Client</classname> を使用するアプリケーションを作成し、それをテストしたい場合には、
|
|
<classname>Zend_Http_Client</classname> を使用するアプリケーションを作成し、それをテストしたい場合には、
|
|
|
デフォルトのアダプタを Test アダプタ (モックオブジェクト) に変更します。
|
|
デフォルトのアダプタを Test アダプタ (モックオブジェクト) に変更します。
|
|
|
これで、サーバに接続せずにテストを行えるようになります。
|
|
これで、サーバに接続せずにテストを行えるようになります。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
<classname>Zend_Http_Client_Adapter_Test</classname> には setResponse() というメソッドがあります。
|
|
<classname>Zend_Http_Client_Adapter_Test</classname> には setResponse() というメソッドがあります。
|
|
|
このメソッドのパラメータには、<acronym>HTTP</acronym> レスポンスをテキストか
|
|
このメソッドのパラメータには、<acronym>HTTP</acronym> レスポンスをテキストか
|
|
@@ -459,8 +532,10 @@ $client->request("PUT");
|
|
|
レスポンスを設定すると、Test アダプタは常にこのレスポンスを返すようになります。
|
|
レスポンスを設定すると、Test アダプタは常にこのレスポンスを返すようになります。
|
|
|
実際の <acronym>HTTP</acronym> リクエストは行いません。
|
|
実際の <acronym>HTTP</acronym> リクエストは行いません。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<example id="zend.http.client.adapters.test.example-1">
|
|
<example id="zend.http.client.adapters.test.example-1">
|
|
|
<title>HTTP レスポンススタブを使用したテスト</title>
|
|
<title>HTTP レスポンススタブを使用したテスト</title>
|
|
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
<programlisting language="php"><![CDATA[
|
|
|
// 新しいアダプタとクライアントのインスタンスを作成します
|
|
// 新しいアダプタとクライアントのインスタンスを作成します
|
|
|
$adapter = new Zend_Http_Client_Adapter_Test();
|
|
$adapter = new Zend_Http_Client_Adapter_Test();
|
|
@@ -487,6 +562,7 @@ $response = $client->request('GET');
|
|
|
// .. $response の処理を続けます...
|
|
// .. $response の処理を続けます...
|
|
|
]]></programlisting>
|
|
]]></programlisting>
|
|
|
</example>
|
|
</example>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
上の例のようにすると、<acronym>HTTP</acronym> クライアントにお望みのレスポンスを返させることができます。
|
|
上の例のようにすると、<acronym>HTTP</acronym> クライアントにお望みのレスポンスを返させることができます。
|
|
|
その際にネットワーク接続は使用しません。また、実際のサーバからのレスポンスも使用しません。
|
|
その際にネットワーク接続は使用しません。また、実際のサーバからのレスポンスも使用しません。
|
|
@@ -500,8 +576,10 @@ $response = $client->request('GET');
|
|
|
setResponse() を単独で使うことはできません。なぜなら、
|
|
setResponse() を単独で使うことはできません。なぜなら、
|
|
|
結果が呼び出し元に返ってくるまで次のレスポンスを設定できないからです。
|
|
結果が呼び出し元に返ってくるまで次のレスポンスを設定できないからです。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<example id="zend.http.client.adapters.test.example-2">
|
|
<example id="zend.http.client.adapters.test.example-2">
|
|
|
<title>複数の HTTP レスポンススタブを使用したテスト</title>
|
|
<title>複数の HTTP レスポンススタブを使用したテスト</title>
|
|
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
<programlisting language="php"><![CDATA[
|
|
|
// 新しいアダプタおよびクライアントのインスタンスを作成します
|
|
// 新しいアダプタおよびクライアントのインスタンスを作成します
|
|
|
$adapter = new Zend_Http_Client_Adapter_Test();
|
|
$adapter = new Zend_Http_Client_Adapter_Test();
|
|
@@ -534,17 +612,20 @@ $adapter->addResponse(
|
|
|
// オブジェクトに注入し、オブジェクトの動きを以下でテストします
|
|
// オブジェクトに注入し、オブジェクトの動きを以下でテストします
|
|
|
]]></programlisting>
|
|
]]></programlisting>
|
|
|
</example>
|
|
</example>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
setResponse() メソッドは、
|
|
setResponse() メソッドは、
|
|
|
<classname>Zend_Http_Client_Adapter_Test</classname> のバッファにあるレスポンスをすべて削除し、
|
|
<classname>Zend_Http_Client_Adapter_Test</classname> のバッファにあるレスポンスをすべて削除し、
|
|
|
最初に返されるレスポンスを設定します。addResponse()
|
|
最初に返されるレスポンスを設定します。addResponse()
|
|
|
メソッドは、それに続くレスポンスを追加します。
|
|
メソッドは、それに続くレスポンスを追加します。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
レスポンスは、それを追加した順に再生されます。
|
|
レスポンスは、それを追加した順に再生されます。
|
|
|
登録したよりも多くのリクエストが発生した場合は、
|
|
登録したよりも多くのリクエストが発生した場合は、
|
|
|
返されるレスポンスは最初のものに戻り、そこからまた順に返されるようになります。
|
|
返されるレスポンスは最初のものに戻り、そこからまた順に返されるようになります。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
上の例で、このアダプタがテストするように設定されているのは、
|
|
上の例で、このアダプタがテストするように設定されているのは、
|
|
|
302 リダイレクトが発生した場合のオブジェクトの挙動です。
|
|
302 リダイレクトが発生した場合のオブジェクトの挙動です。
|
|
@@ -556,6 +637,7 @@ $adapter->addResponse(
|
|
|
テストアダプタを設定し終えたら、そのアダプタを含む <acronym>HTTP</acronym>
|
|
テストアダプタを設定し終えたら、そのアダプタを含む <acronym>HTTP</acronym>
|
|
|
クライアントをテスト対象オブジェクトに注入し、その挙動をテストします。
|
|
クライアントをテスト対象オブジェクトに注入し、その挙動をテストします。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
アダプタをわざと失敗させたい場合は
|
|
アダプタをわざと失敗させたい場合は
|
|
|
<methodname>setNextRequestWillFail($flag)</methodname> を使用します。
|
|
<methodname>setNextRequestWillFail($flag)</methodname> を使用します。
|
|
@@ -564,8 +646,10 @@ $adapter->addResponse(
|
|
|
を発生させます。これは、外部のサイトのコンテンツをキャッシュするアプリケーションで、
|
|
を発生させます。これは、外部のサイトのコンテンツをキャッシュするアプリケーションで、
|
|
|
(外部サイトがダウンしていたときの) 挙動をテストする際に有用です。
|
|
(外部サイトがダウンしていたときの) 挙動をテストする際に有用です。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<example id="zend.http.client.adapters.test.example-3">
|
|
<example id="zend.http.client.adapters.test.example-3">
|
|
|
<title>アダプタを失敗させる</title>
|
|
<title>アダプタを失敗させる</title>
|
|
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
<programlisting language="php"><![CDATA[
|
|
|
// 新たなアダプタとクライアントを作成します
|
|
// 新たなアダプタとクライアントを作成します
|
|
|
$adapter = new Zend_Http_Client_Adapter_Test();
|
|
$adapter = new Zend_Http_Client_Adapter_Test();
|
|
@@ -574,7 +658,7 @@ $client = new Zend_Http_Client('http://www.example.com', array(
|
|
|
));
|
|
));
|
|
|
|
|
|
|
|
// 次のリクエストでわざと例外を発生させます
|
|
// 次のリクエストでわざと例外を発生させます
|
|
|
-$adapter->nextRequestWillFail(true);
|
|
|
|
|
|
|
+$adapter->setNextRequestWillFail(true);
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
// これは Zend_Http_Client_Adapter_Exception となります
|
|
// これは Zend_Http_Client_Adapter_Exception となります
|
|
@@ -591,12 +675,14 @@ try {
|
|
|
|
|
|
|
|
<sect2 id="zend.http.client.adapters.extending">
|
|
<sect2 id="zend.http.client.adapters.extending">
|
|
|
<title>独自の接続アダプタの作成</title>
|
|
<title>独自の接続アダプタの作成</title>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
独自の接続アダプタを作成し、それを使用することもできます。
|
|
独自の接続アダプタを作成し、それを使用することもできます。
|
|
|
たとえば持続的なソケットを使用するアダプタを作成したり、
|
|
たとえば持続的なソケットを使用するアダプタを作成したり、
|
|
|
キャッシュ機能を追加したアダプタを作成したりなど、
|
|
キャッシュ機能を追加したアダプタを作成したりなど、
|
|
|
作成するアプリケーションの要件にあわせたものを作成することが可能です。
|
|
作成するアプリケーションの要件にあわせたものを作成することが可能です。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<para>
|
|
<para>
|
|
|
そのためには、<classname>Zend_Http_Client_Adapter_Interface</classname>
|
|
そのためには、<classname>Zend_Http_Client_Adapter_Interface</classname>
|
|
|
を実装したクラスを作成する必要があります。
|
|
を実装したクラスを作成する必要があります。
|
|
@@ -604,8 +690,10 @@ try {
|
|
|
この例で定義されているすべてのパブリック関数を、
|
|
この例で定義されているすべてのパブリック関数を、
|
|
|
アダプタで定義する必要があります。
|
|
アダプタで定義する必要があります。
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
<example id="zend.http.client.adapters.extending.example-1">
|
|
<example id="zend.http.client.adapters.extending.example-1">
|
|
|
<title>独自の接続アダプタの作成</title>
|
|
<title>独自の接続アダプタの作成</title>
|
|
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
<programlisting language="php"><![CDATA[
|
|
|
class MyApp_Http_Client_Adapter_BananaProtocol
|
|
class MyApp_Http_Client_Adapter_BananaProtocol
|
|
|
implements Zend_Http_Client_Adapter_Interface
|
|
implements Zend_Http_Client_Adapter_Interface
|