XML-RPC и XML-RPC класове сървърни CodeIgniter упътване за употреба

XML-RPC класове ви позволяват да ги изпраща на друг сървър, или сте задали своя XML-RPC сървър за получаване на заявки.

Какво е XML-RPC?

Просто казано, това е начин за два компютъра да общуват по интернет посредством XML. Един компютър, наречен на клиента. Той изпраща искането за XML-RPC към друг компютър, който ще се нарича сървър. След сървърът приема и обработва искането, го изпраща обратно в отговор на клиента.

За подробни спецификации, можете да посетите сайта XML-RPC.

Инициализация на класа

Подобно на повечето други класове в CodeIgniter, класове XML-RPC и XML-RPCS инициализират във вашия контролер с помощта на функцията $ това-> натоварване-> библиотека:

За да изтеглите клас XML-RPC, използвайте:

Натоварената с класа на обекта XML-RPC е на разположение за ползване, тъй като $ това-> xmlrpc

За да заредите клас XML-RPC сървър, използвайте:

В XML-RPCs зареден обект клас е на разположение за ползване, тъй като $ това-> xmlrpcs

Забележка: При използване на клас XML-RPC сървър, трябва да изтеглите двата класа - XML-RPC и XML-RPC сървър.

Заявките се изпращат XML-RPC

За да изпратите заявка за XML-RPC към сървъра, трябва да предоставите следната информация:

  • сървъра URL
  • метод на сървъра, който искате да се обадите
  • данни поискване (обяснени по-долу).

Тук е основен пример за това как да се изпрати една проста пинг Weblogs.com за пинг-о-Matic

ако (. $ това-> xmlrpc-> send_request ())
ехо $ това-> xmlrpc-> display_error ();
>

обяснение

В горния код инициализира класа на XML-RPC, задава URL адреса на сървъра и метод да се нарича (weblogUpdates.ping). Искането (в този случай, заглавието и URL адреса на вашия сайт) са поставени в масив за транспортиране установени на базата (функцията за заявка). И накрая, пълен Заявката е изпратена. Ако send_request метод () връща FALSE, ние покаже съобщение за грешка, върнат от сървъра на XML-RPC.

поискване анатомия

поискване XML-RPC е просто данните, които изпращате XML-RPC сървър. всяка част от данните в искането, се нарича параметър на заявката. Горният пример има два параметъра: URL и заглавието на сайта си. Когато сървърът на XML-RPC получи заявката Ви, тя ще изглежда по параметрите, които го изискват.

Parameres да поискат да бъдат поставени в масив за транспорт, и всеки параметър може да бъде един от седемте вида (низове, числа, дати и т.н.). Ако параметрите са различен вид от низ, трябва да включите от типа на данните в масива на заявка.

Ето един пример за прост масив с три параметъра:

$ Заявка = масив ( "Джон", "Доу", "www.some-site.com ');
$ Това-> xmlrpc-> заявка (искане $);

Ако използвате различен тип данни, с изключение на линиите, или да използвате няколко различни вида на данните, трябва да се извършва всеки параметър в собствената си масив, с типа на данните на втора позиция:

$ Заявка = масив (
масив ( "Джон", "низ"),
масив ( "Доу", "низ"),
масив (FALSE "булева"),
масив (12345, "Int)
);
$ Това-> xmlrpc-> заявка (искане $); раздел типове данни по-долу съдържа пълен списък на наличните типове данни.

Създаване на XML-RPC сървъра

XML-RPC сървъра работи като пътен инспектор, в очакване на входящи заявки и ги насочват към съответните функции за обработка.

За да създадете свой собствен XML-RPC сървър, включително инициализация на класа XML-RPC сървър в контролера си там, където очаквате входящите искания, след което задайте масива от инструкции, които трябва да бъдат изпратени на входящо искане, в което клас всеки метод за преработка.

$ Конфигуриране [ 'функции "] [' new_post '] = масив (" функция "=>' My_blog.new_entry"),
$ Конфигуриране [ 'функции "] [' update_post '] = масив (" функция "=>' My_blog.update_entry ');
$ Конфигуриране [ "обект"] = $ това;

Горният пример включва масив, който предвижда два вида искания право Server. Разрешени методи отляво на масива. Когато получи някой от тях, те ще бъдат насочени към класа и на метода, описан в дясно.

Key "обект" е специален ключ, който ви мине инстанция на клас обект, ако е необходимо, когато методът за който подавате посоката не е част superobjects CodeIgniter.

С други думи, ако клиентът на XML-RPC изпраща метод искане new_post. Вашата товари на сървъра My_blog клас и призовава new_entry функция. Ако искането дойде метод update_post. Вашите товари на сървъра My_blog клас и призовава update_entry функция.

Имената на функциите в горния пример са произволни. Вие решавате как ще бъде наречен на вашия сървър, или можете да използвате стандартизиран API, като Blogger или MetaWeblog API.

Има две допълнителни бутони за конфигуриране, които можете да използвате, за да се инициализира клас сървър: отстраняване на грешки byst е настроен на TRUE, да се даде възможност за отстраняване на грешки и xss_clean може да бъде настроен да FALSE, за да се предотврати изпращането на данни чрез функцията xss_clean библиотеката за сигурност.

Заявката се обработва на сървъра

Когато сървърът на XML-RPC получи искане и зарежда клас / метод за преработка, тя ще премине обект на този метод, съдържащ данните, изпратени от клиента.

В примера по-горе, ако това бъде поискано new_post метод. сървърът ще чака за съществуващ клас, в съответствие с този прототип:

клас My_blog простира CI_Controller

функция new_post ($ заявка)

Променливата искане $ е обект, съставен от сървъра, който съдържа данните, изпратени от XML-RPC клиент. С помощта на този инструмент, ще имате достъп до параметрите на искането. позволявайки ви да обработи заявката. Когато приключите с обработката, ще изпрати отговор обратно на клиента.

По-долу е пример от реалния свят, използвайки API Blogger. Един от методите за API Blogger е getUserInfo (). Използвайки този метод, XML-RPC клиент може да изпраща на сървъра, потребителско име и парола, в отговор, сървърът изпраща обратно информация за конкретен потребител (псевдоним, потребителско име, имейл адрес, и така нататък). Ето какво трябва да се търси функция за обработка на:

клас My_blog простира CI_Controller

функция getUserInfo (заявка $)
$ Име = "Смити";
$ Парола = 'secretsmittypass ";

ако ($ параметри [ '1']! = $ потребителско име и $ параметри [ '2']! = $ парола)
върне $ това-> xmlrpc-> send_error_message ( '100', 'Невалиден Access');
>

бележки

output_parameters () функция се получава индексиран масив, съответстващ на параметрите на заявката, изпратена от клиента. В примера по-горе, параметрите продукция ще бъде потребителското име и паролата.

Ако потребителското име и паролата, изпратена от клиента, а не право, ще се появи съобщение, използвайки send_error_message ().

Ако операцията е била успешна, клиентът изпраща обратно масив отговор, съдържаща информация за потребителя.

отговор форматиране

Както и с исканията. отговорите трябва да бъдат форматирани масив. Въпреки това, за разлика от искането, отговорът е масив, който съдържа един елемент. Този елемент може да бъде масив с няколко допълнителни масиви, но тя трябва да има един-единствен първичен индекс. с други думи, основната прототип изглежда така:

$ Response = масив ( "данни за отговор", "масив");

Отговорите обикновено включват множество части от информацията. За да направите това, ние трябва да поставите вашия собствен отговор в масива, така че масивът се съдържа pervychny едно парче данни. Ето един пример, който ви показва как би могъл да изглежда:

$ Response = масив (
масив (
"First_name '=> масив (" John "," низ "),
"LAST_NAME '=> масив (" Доу "," низ "),
"Member_id '=> масив (123,435," Int "),
"Todo_list '=> масив (масив (" чиста къща "," обадя на мама "," водни растения ")," масив "),
)
"Struct"
);

Забележете, че по-горе масива е форматиран като структура. Това е една от най-често срещаният тип на данни за отговора.

Както в случая с искането, отговорът може да бъде един от седемте типове данни, изброени в типовете данни.

Изпращане отговор грешка

Ако имате нужда, за да изпратите съобщение за грешка на клиента, че ще използвате следното:

върне $ това-> xmlrpc-> send_error_message ( "123", "Желани не са налични данни");

Първият параметър е броя на грешките, а вторият параметър е текстът на съобщението за грешка.

Създаване на вашия собствен клиента и сървъра

За да ви помогне да разберете всичко това, което казваме, нека създадем няколко контролери, които действат като XML-RPC клиент и сървър. Ще използвате Клиента да изпратите заявка към сървъра и да получите отговор.

Забележка: В кода по-горе, ние използвахме асистент URL адрес. Можете да намерите повече информация за него на страницата Помощници.

Опитайте го!

Сега посещават вашия сайт, използвайки адреса, съответстващ на това:

Трябва да видите съобщение, изпратено от сървъра и неговата реакция.

Клиентът сте създали изпраща съобщение ( "Как върви?") Сървър, заедно с метода поискване "Поздрави". Сървърът получава искането и го изпраща към функцията "процес", където отговорът ще бъде върнат.

Използването на асоциативни масиви в параметъра на заявката

Ако искате да използвате асоциативен масив в метод на параметрите си, ще трябва следната структура:

Можете да получите асоциативен масив, когато по искане на сървъра.

$ Параметри = $ поискване-> output_parameters ();
$ Име = $ параметри [ '0'] [името "];
$ Площ = $ параметри [ "1"] [ "размер"];
$ Площ = $ параметри [ "1"] [ "форма"];

$ Това-> xmlrpc-> сървър ()

Задава броя на URL и порт на сървъра, който получава искания:

$ Това-> xmlrpc-> изчакване ()

Задава времето за изчакване (в секунди), след което искането ще бъде отменена;

$ Това-> xmlrpc-> метод ()

Задава метода, които ще бъдат поискани в сървъра на XML-RPC:

Къде метод е името на метода.

$ Това-> xmlrpc-> поискване ()

Той приема масив от данни и изгражда искане за изпращане на своя XML-RPC сървър:

$ Това-> xmlrpc-> send_request ()

Функцията на изпращане на искането. Връща булева вярно или невярно, в зависимост от успеха или неуспеха, което ви позволява да използвате функцията на състоянието.

$ Това-> xmlrpc-> set_debug (истина);

Тя дава възможност за отстраняване на грешки, която ще покаже различни информационни и грешки данни, полезни за отстраняване на грешки по време на развитието.

$ Това-> xmlrpc-> display_error ()

Връща съобщение за грешка, като низ, ако молбата Ви не е поради някаква причина.

$ Това-> xmlrpc-> display_response ()

Връща отговор от отдалечения сървър за постъпилото искане. Отговорът обикновено е под формата на асоциативен масив.

$ Това-> xmlrpc-> send_error_message ()

Тази функция на търсенето ви позволява да изпращате съобщение за грешка от сървъра си към клиента. Първият параметър е броят грешка, докато вторият параметър съдържа текст на съобщението за грешка.

върне $ това-> xmlrpc-> send_error_message ( "123", "Желани не са налични данни");

$ Това-> xmlrpc-> send_response ()

Тя ви позволява да изпращате отговор от вашия сървър на клиента. С този метод трябва да се изпрати масив валидни данни.

$ Response = масив (
масив (
Грешка '=> масив (FALSE "булева"),
"Message" => "Благодаря за пинг!"
)
"Struct ');
върне $ това-> xmlrpc-> send_response ($ отговор);

типове данни

В съответствие със спецификацията на XML-RPC спец има седем вида стойности, които можете да изпратите използвайки XML-RPC: