1 <sect1 id="zend.http.client">
2 <title>Zend_Http_Client - Введение</title>
4 <sect2 id="zend.http.client.introduction">
5 <title>Введение</title>
7 Zend_Http_Client предоставляет простой интерфейс для выполнения
8 HTTP-запросов. Zend_Http_Client поддерживает как большинство простых
9 возможностей, ожидаемых от любого HTTP-клиента, так и более сложные
10 функции, такие, как HTTP-аутентификация и выгрузка файлов. При
11 успешно выполненных запросах (и большинстве неуспешно выполненных)
12 возвращается объект Zend_Http_Response, который предоставляет доступ
13 к заголовкам и телу ответа (см. <xref linkend="zend.http.response" />).
15 Zend_Http_Client provides an easy interface for preforming Hyper-Text
16 Transfer Protocol (HTTP) requests. Zend_Http_Client supports most simple
17 features expected from an HTTP client, as well as some more complex
18 features such as HTTP authentication and file uploads. Successful
19 requests (and most unsuccessful ones too) return a Zend_Http_Response
20 object, which provides access to the response's headers and body (see
21 <xref linkend="zend.http.response" />).
25 Конструктор класса опционально принимает URL (может быть строкой или
26 объектом Zend_Uri_Http) и массив конфирурационных параметров. Оба
27 параметра могут быть опущены и установлены позднее через методы
28 <code>setUri()</code> и <code>setConfig()</code>.
30 The class constructor optionally accepts a URL as it's first parameter
31 (can be either a string or a Zend_Uri_Http object), and an optional
32 array of configuration parameters. Both can be left out,
33 and set later using the setUri() and setConfig() methods.
36 <title>Инстанцирование объекта Zend_Http_Client<!--Instantiating a Zend_Http_Client object--></title>
37 <programlisting language="php">
39 require_once 'Zend/Http/Client.php';
41 $client = new Zend_Http_Client('http://example.org', array(
45 // Этот код делает то же самое:
46 $client = new Zend_Http_Client();
47 $client->setUri('http://example.org');
48 $client->setConfig(array(
52 ?>]]></programlisting>
56 <sect2 id="zend.http.client.configuration">
57 <title>Параметры конфигурации<!--Configuration Parameters--></title>
59 Конструктор и метод <code>setConfig()</code> принимают ассоциативный
60 массив параметров конфигурации. Установка этих параметров является
61 опциональной, поскольку все они имеют значения по умолчанию.
63 The constructor and setConfig() method accept an associative array
64 of configuration parameters. Setting these parameters is optional,
65 as they all have default values.
68 <title>Параметры конфигурации Zend_Http_Client<!--Zend_Http_Client configuration parameters--></title>
72 <entry>Параметр</entry>
73 <entry>Описание</entry>
75 <entry>Значение по умолчанию</entry>
80 <entry>maxredirects</entry>
82 Максимальное количество последующих
83 перенаправлений (0 = ни одного перенаправления)
85 Maximum number of redirections to follow (0 = none)
88 <entry>integer</entry>
92 <entry>strictredirects</entry>
94 Строгое следование спецификации RFC при
95 перенаправлениях (см. <xref linkend="zend.http.client.redirections" />)
97 Whether to strictly follow the RFC when redirecting (see <xref linkend="zend.http.client.redirections" />)
100 <entry>boolean</entry>
104 <entry>useragent</entry>
106 Идентификатор агента пользователя (отправляется
109 User agent identifier string (sent in request headers)
112 <entry>string</entry>
113 <entry>'Zend_Http_Client'</entry>
116 <entry>timeout</entry>
118 Таймаут соединения в секундах
120 Connection timeout (seconds)
123 <entry>integer</entry>
127 <entry>httpversion</entry>
129 Версия протокола HTTP
131 HTTP protocol version
134 <entry>float (1.1 or 1.0)</entry>
138 <entry>adapter</entry>
140 Используемый класс адаптера соединения
141 (см. <xref linkend="zend.http.client.adapters" />)
143 Connection adapter class to use (see <xref linkend="zend.http.client.adapters" />)
147 <entry>'Zend_Http_Client_Adapter_Socket'</entry>
150 <entry>keepalive</entry>
152 Включение поддержки соединения keep-alive с
153 сервером. Может быть полезно и повышает
154 поизводительность, если выполняется несколько
155 последовательных запросов к одному и тому же
158 Whether to enable keep-alive connections with the server. Useful and might improve performance if several consecutive requests to the same server are performned.
161 <entry>boolean</entry>
169 <sect2 id="zend.http.client.basic-requests">
170 <title>Выполнение базовых HTTP-запросов<!--Performing Basic HTTP Requests--></title>
172 Выполнение простых HTTP-запросов с использованием метода
173 <code>request()</code> довольно простое, и редко требуется больше
174 кода, чем в эти три строчки:
177 Performing simple HTTP requests is very easily done using the
178 request() method, and rarely needs more than three lines of code:
181 <title>Выполнение простого запроса GET<!--Preforming a Simple GET Request--></title>
182 <programlisting language="php">
184 require_once 'Zend/Http/Client.php';
186 $client = new Zend_Http_Client('http://example.org');
187 $response = $client->request();
188 ?>]]></programlisting>
190 Метод <code>request()</code> принимает один необязательный параметр
191 - метод запроса. Это могут быть методы GET, POST, PUT, HEAD, DELETE,
192 TRACE, OPTIONS или CONNECT, определенные в протоколе HTTP.
194 The request() method takes one optional parameter - the request method.
195 This can be either GET, POST, PUT, HEAD, DELETE, TRACE, OPTIONS or
196 CONNECT as defined by the HTTP protocol
200 См. RFC 2616 - <ulink url="http://www.w3.org/Protocols/rfc2616/rfc2616.html" />.
203 Для удобства все они определены как константы класса:
204 Zend_Http_Request::GET, Zend_Http_Request::POST и т.д.
206 For convenience, these are all defined as class constants:
207 Zend_Http_Request::GET, Zend_Http_Request::POST and so on.
211 Если метод запроса не был указан, то используемый метод определяется
212 последним вызовом <code>setMethod()</code>. Если
213 <code>setMethod()</code> не был вызван, то по умолчанию используется
214 метод GET (см. пример выше).
216 If no method is specified, the method set by the last setMethod()
217 call is used. If setMethod() was never called, the default request
218 method is GET (see the above example).
221 <title>Использование методов запроса, отличных от GET<!--Using Request Methods Other Than GET--></title>
222 <programlisting language="php">
224 // Выполнение запроса POST
225 $response = $client->request('POST');
227 // Еще один способ сделать то же самое:
228 $client->setMethod(Zend_Http_Client::POST);
229 $response = $client->request();
230 ?>]]></programlisting>
235 <sect2 id="zend.http.client.parameters">
236 <title>Добавление параметров GET и POST<!--Adding GET and POST parameters--></title>
238 Добавление параметров GET в HTTP-запрос довольно простое, это может
239 быть сделано посредством определения параметров как часть URL или с
240 использованием метода <code>setParameterGet()</code>. Этот метод
241 принимает имя параметра GET и его значение первый и второй аргументы
242 соответственно. Метод <code>setParameterGet()</code>
243 может также принимать ассоциативный массив пар имя => значение, что
244 удобно, если нужно установить несколько параметров GET.
246 Adding GET parameters to an HTTP request is quite simple, and can
247 be done either by specifying them as part of the URL, or by using
248 the setParameterGet() method.
249 This method takes the GET parameter's name as it's first parameter,
250 and the GET parameter's value as it's second parameter.
251 For convenience, the setParameterGet() method can also accept a
252 single associative array of name => value GET variables - which may
253 be more comfortable when several GET parameters need to be set.
256 <title>Установка параметров GET<!--Setting GET Parameters--></title>
257 <programlisting language="php">
259 // Установка параметра GET с использованием метода setParameterGet
260 $client->setParameterGet('knight', 'lancelot');
262 // Эвивалентный код с установкой через URL:
263 $client->setUri('http://example.com/index.php?knight=lancelot');
265 // Добавление нескольких параметров в одном вызове
266 $client->setParameterGet(array(
267 'first_name' => 'Bender',
268 'middle_name' => 'Bending'
269 'made_in' => 'Mexico',
271 ?>]]></programlisting>
275 В то время как параметры GET могут отправляться с любыми методами
276 запроса, параметры POST могут отправляться только в теле запроса
277 POST. Добавление параметров POST к запросу очень похоже на
278 добавление параметров GET и выполняется через метод
279 <code>setParameterPost()</code>.
281 While GET parameters can be sent with every request method, POST
282 parameters are only sent in the body of POST requests. Adding POST
283 parameters to a request is very similar to adding GET parameters,
284 and can be done with the setParameterPost() method, which is
285 similar to the setParameterGet() method in structure.
288 <title>Установка параметров POST<!--Setting POST Parameters--></title>
289 <programlisting language="php">
291 // Установка параметра POST
292 $client->setParameterPost('language', 'fr');
294 // Установка нескольких параметров POST,
295 // один из них - с несколькими значениями
296 $client->setParameterPost(array(
299 'selection' => array(45, 32, 80)
301 ?>]]></programlisting>
304 Заметьте, что отправляя запрос POST, вы можете установить как
305 параметры POST, так и параметры GET. С другой стороны, хотя
306 установка параметров POST для не-POST запросов не вызывает ошибки,
307 она не имеет практического смысла. Если запрос не производится по
308 методу POST, то параметры POST просто игнорируются.
310 Note that when sending POST requests, you can set both GET and
311 POST parameters. On the other hand, while setting POST parameters
312 for a non-POST request will not trigger and error, it is useless.
313 Unless the request is a POST request, POST parameters are simply
319 <sect2 id="zend.http.client.accessing_last">
320 <title>Получение последних запроса и ответа<!--Accessing Last Request and Response--></title>
322 Zend_Http_Client предоставляет методы для получения последнего
323 отправленного запроса и последнего ответа, полученного через
324 объект клиента. Метод
325 <code>Zend_Http_Client->getLastRequest()</code> не требует
326 параметров и возвращает последний HTTP-запрос, отправленный
327 через объект клиента, в виде строки. Аналогично,
328 <code>Zend_Http_Client->getLastResponse()</code> возвращает
329 последний HTTP-ответ, полученный через объект клиента, в виде
330 объекта <link linkend="zend.http.response">Zend_Http_Response</link>.
332 Zend_Http_Client provides methods of accessing the last request
333 sent and last response received by the client object.
334 <code>Zend_Http_Client->getLastRequest()</code> takes no parameters
335 and returns the last HTTP request sent by the client as a string.
336 Similarly, <code>Zend_Http_Client->getLastResponse()</code> returns
337 the last HTTP response received by the client as a
338 <link linkend="zend.http.response">Zend_Http_Response</link> object.