Как осуществить ОТДЫХА технологии


  Share  
|

Существуют две стороны этой сказки, первая заключается в том, чтобы создать законные ОТДЫХА просит, а второй - как обрабатывать ответы правильно.

Генерация просит

Когда речь заходит о создании просьбе, у Вас есть три основных варианта. Во-первых, можно создать запрос вручную, с помощью PHP в заголовке функции. Это дает полную гибкость в создании запроса, но привлекать наиболее кодирования. Во-вторых, вы можете воспользоваться одной из PHP встроенные в просьбе функций, таких как file_get_contents () или файла () / fopen (), fread () и fclose (). В этом случае, много подробной информации выполняется автоматически, PHP, и вы получите тот же ответ. Наконец, вы можете использовать пользовательский класс предназначен для использования с API нет. Обычно эти занятия требуют ничего больше, чем параметр список, и покажет результаты в виде пользовательских объектов или сделать их доступными через класс.

Руководство поколения

Создание запросов вручную только сложно впервые, после того, - повторного использования кода и модульность удар дюйма Теоретически функцию, которая будет генерировать запрос довольно основных. Во-первых, все параметры запроса готовы обеспечить надлежащую передачу. Далее, URL для конечного создается, а затем анализируются и разбиты на составляющие ее части. Наконец, сам запрос, отправленный розетки:

functioncallAPI ($ конечной, $ devkey, $ действий, типа $, $ ключевое слово)
(
$ действий = urlencode ($ действий);
Тип $ = urlencode ($ типа);
$ ключевых = urlencode ($ ключевое слово);

Три из принят параметры URL кодирования. Это необходимо для обеспечения их надлежащего прошло над URL. В предыдущем примере, при поиске "стиля" была проведена; Если вместо поиска в "стиле книги", пространство потребовало бы кодировку, в результате чего стиль% 20book. Я забытых кодировании devkey переменных, веря, что орган, выдающий занимает, как она будет использоваться во внимание при создании им.

$ сайта = $ конечной. "? devkey = $ devkey и действия = $ действий и тип = $ Тип и ключевое слово = $ ключевое слово ";
$ url_info = parse_url ($ сайта);
$ принимающей = $ url_info [ 'пребывания'];
путь $ = $ url_info [ 'путь']. "?" . $ url_info [ "запрос"];
$ данными = "";

Здесь URL сама создается, в том числе теперь кодирование параметров. URL, необходимо deconstructed до его составных частей для использования в сыром сокет соединения.

$ fp = fsockopen ($ пребывания, 80);
fputs ($ fp, "POST". $ путь. "HTTP/1.1 \ р \ н");
fputs ($ fp, "Host:". $ пребывания. "\ р \ н");
fputs ($ fp, "Примите: * / * \ р \ н");
fputs ($ fp, "Принять - Charset: ISO - 8859 - 1, utf - 8; q = 0,7 *; q = 0,7 \ р \ н ");
fputs ($ fp, "Connection: закрыть \ р \ н");
fputs ($ fp, "Тип содержания: применение / х Картинки с LinuxParty.sk - форма - urlencoded \ р \ н");
fputs ($ fp, "Содержание - Длина:". strlen ($ данные). "\ р \ н \ р \ н");
fputs ($ fp, "$ данных");

Здесь информация, полученная на предыдущих код наконец отправлена. Первый fputs (), строка посылает путь запрашиваемого документа, а вторая строка указывает желаемый хост.

$ ответ = "";
а (! feof ($ fp))
(
$ ответ .= fgets ($ fp, 128);
)
fclose ($ fp);
список ($ http_headers, $ http_content) = взорваться ( "\ р \ н \ р \ н", $ ответа);
вернуться $ http_content;
)

Наконец, ответ будет получен, и содержание ответа возвращается. Вы узнаете, как обрабатывать ответы в разделах, касающихся этой стороны вещей, в ближайшее время.

Быстрый поколения

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

functioncallAPIQuick ($ конечной, $ devkey, $ действий, типа $, $ ключевое слово)
(
$ действий = urlencode ($ действий);
Тип $ = urlencode ($ типа);
$ ключевых = urlencode ($ ключевое слово);
$ сайта = $ конечной. "? devkey = $ devkey и действия = $ действий и тип = $ Тип и ключевое слово = $ ключевое слово ";
$ ответ = @ file_get_contents ($ сайта);
$ возвращения ответ;
)

Там действительно не так много объяснить, с этим примером. URL, кодировка обсуждалось ранее, и единого file_get_contents () обрабатывает слово все магии. В амперсанд перед функцией слово используется для пресечения любых предупреждений, которые могут возникнуть из несуществующего файла или URL, так как они должны заниматься вызовом функции (file_get_contents () вернет ложное в этих случаях) . В заранее PHP5 условиях вам придется использовать fopen () вместо file_get_contents (). Некоторые гибкость теряется с этой просьбой типа, потому что вы можете больше не установить пользовательские заголовки или необязательные заголовки, которые могут потребоваться или очень желательно, в зависимости от API, с которым Вы взаимодействия.

Автоматизированные средства

Как популярности веб-сервисов повышается, это будет преобладание двоичные классы для обработки грязной работы фактически взаимодействуют с сервером. Если Вы хотите взаимодействовать с имеет класс доступен, то, безусловно, заслуживает изучения. Доступ к классу, разумеется, будет зависеть от класса сам. Он должен быть достаточно документации, и доступ, скорее всего, не слишком отличаются от предыдущих примеров, только с чуть более проверки ошибок (вы надеетесь). Что-то помнить, что многие двоичные модули разрабатываются и поддерживаются третьими сторонами, и как таковая вам, возможно, придется подождать некоторое время, после новых функций выпущен в API для них становятся доступными в свой класс.

Обработка Отзыв

Как вы заниматься ответ зависит от того, какой метод отправки запроса вы выбираете. Если вы породили запрос вручную или с помощью одной из PHP встроенных функций (например, file_get_contents ()) Вам также нужно вручную обработать ответ. Если используется сторонний модуль, она будет иметь свой собственный интерфейс для получения результатов.

Ручная Разбор ответ

Реакция со стороны сервера должно быть XML документа; К счастью, XML был разработан чтобы его можно было легко проанализировать. К сожалению, каким бы он был разработан, вручную разборе, как правило, ничего не весело. PHP5 поставляется с SimpleXML, которое делает обработки XML документов проста. PHP4 пользователи не имеют SimpleXML; Однако несколько сторонних модулей, как MiniXML имеются, которые выполняют аналогичные функции.

После того как вы получили ответ, придерживаться его в SimpleXML объекта должна быть проста. Используя предыдущий пример библиотеки и просить функцию, вы в итоге что-то вроде этого:

$ ответ = callAPIQuick ( "http://library.example.com/api.php ','123', 'поиск',
"книга ',' стиль ');
если ($ ответ)
(
$ xml = simplexml_load_string ($ ответ);
print_r ($ xml);
) еще
(
повторить "Ошибка при загрузке канала";
)

В данном случае ответ не является ложным (и, следовательно, нечто, предположительно в XML вы надеялись, была вернулись). Заметим, что это предположение в целом довольно силе. Когда сервер обеспечения API встречает ошибку, он должен предоставить ошибка в приятном формате XML. В simplexml_load_string () функция принимает ответ и превращает ее в объект XML, которые могут быть непосредственно обращались, iterated путем, и так далее. Наконец, print_r () функции результаты в удобной для пользователя продукции с указанием содержания объекта, показано здесь:

SimpleXMLElement Объект
(
[Запрос] => SimpleXMLElement Объект
(
[RequestId] => 123a456
[Параметры] => SimpleXMLElement Объект
(
[Аргумент] => Array
(
[0] => SimpleXMLElement Объект
(
)
[1] => SimpleXMLElement Объект
(
)
[2] => SimpleXMLElement Объект
(
)
[3] => SimpleXMLElement Объект
(
)
)
)
)
[Ответ] => SimpleXMLElement Объект
(
[ResultCount] => 2
[пункт] => Array
(
[0] => SimpleXMLElement Объект
(
[Название] => Стиль Заказать Том 1
[Статус] => Из
[Имеет] => 3
[CopiesOnHand] => 2
[Автор] => Jon Doe

)

[1] => SimpleXMLElement Объект
(
[Название] => Стиль Заказать Том 2
[Статус] => В
[Имеет] => 0
[CopiesOnHand] => 1
[Автор] => Jon Doe
)
)
)
)

Глядя на эту продукцию, - пару вещей следует немедленно очевидны:

  • SimpleXML делает много действительно полезные вещи для вас очень быстро.

  • В результате объекты, не отображаются атрибуты (см. аргумент в списке параметров). Эти данные есть, она просто не показывается с print_r ().

  • Массивы начать с 0 (как и повсюду в PHP, это просто что-то помнить).

  • В Пункт массив - это просто попрошайничество будет решаться с foreach () цикл.

Принимая все это во внимание информацию, пару быстрых строк кода - это все, что требуется для изучения содержания в более полном объеме.

повторить "Вы искали: ($ xml -> Просьба -> Параметры -> Аргумент [3] -> Стоимость) <br>";
повторить "Вот ваши ($ xml -> Ответ -> ResultCount) <br> результаты";
foreach ($ xml -> Ответ -> Пункт AS и $ пункта)
(
повторить "($ пункт -> Название) на ($ пункт -> Автор) <br>";
)

Здесь поисковый запрос и результат подсчета представлена, а затем результаты сами iterated путем. Синтаксис получает немного странным при работе с массивами (как продемонстрировано, когда поисковый запрос напечатан), поэтому часто целесообразно итерацию их для ясности.

ОТДЫХ является эффективным методом дистанционного опроса API, когда это допустимо по просьбе части Вашего сделка должна состояться в ясной. Создание ОТДЫХА запросы так же легко, как URL - кодирование требуемых параметров и с указанием пункт назначения на слово. Решение ОТДЫХА ответов может быть несколько сложнее; Вместе с тем, привлечение средств как SimpleXML, она тоже может быть завершена быстро.

это статья добавлена Emanuela Хедрик

Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions