ПредишенСледващото

Дълго време, че ще се справят с протокол SOAP, вижте как се работи с него, как да се използва и т.н. но това в отсъствието на големи количества от свободното си време, тъй като на обичайната нежеланието да се притеснявам за нещо ново все още не може да получи до написването на някои приложения, използващи сапун. Обикновено, когато разбрах, с някои API уеб-услуга, която е за избор на два протокола - чист HTTP или SOAP излязох на първо място, и в действителност сега разбрах, че нищо :).

Оказа се, че за да се развие една малка SOAP клиент в Делфи начално и порядък по-лесно, отколкото използването на отделна библиотека за работа с HTTP (Synapse. WinInet, Indy, и т.н.) във връзка с библиотеките като MSXML, NativeXML (за работа с XML) или SuperObject (за JSON).

Като пример, реших да напиша една малка клиент за работа с Bing Translator API (Google преводач вече - сега реших да видя какво има в nasochinyali Microsoft).

Първо, няколко встъпителни думи от факта, че тя представлява SOAP протокол.

SOAP (от английски език S изпъл О bject А Р rotocol достъпване -. А просто обект Протокол за достъп) - Протокол структурирани съобщения в разпределена изчислителна среда. SOAP първоначално е бил предназначен основно (RPC) за изпълнението на отдалечена процедура. Сега използвания протокол за обмен на произволни съобщения в XML формат, а не само за процедура повикването.

На същата страница Wiki може да се намери и за липсата на SOAP - увеличение на обема на предаваните данни. Но ние сме днес не е толкова важно, че ние просто ще се справят с работата.

Забележка: Ако са много важни за количеството данни, които се прехвърлят, е възможно да се въвеждат следната класификация на обмен на данни в различни формати (с изключение на обикновен текст) и с помощта на различни протоколи (един от тези, които сега ми повече или по-малко е известно):

  1. HTTP + SOAP - най-голям обем;
  2. HTTP + XML - средният обем;
  3. HTTP + JSON - най-малкият обем;

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

От WSDL - стандартен език за описване на услуги в мрежата, а след това, съответно, Delphi предоставя удобен за внос на такива документи и представянето им в необходимата форма имаме нужда, т.е. като отделна единица Delphi.

Сега преминете направо към разглеждане на пример с Bing API чрез SOAP.

Преди да стартирате Delphi и започват да се развиват нашите мини-преводач, трябва да си създадете профил в Bing и ключов разработчик страница достъп (AppID) до API. С регистрирането, ние получаваме и не забравяйте нашата AppID.

Сега тече Delphi (имам е Delphi XE) и изберете File менюто -> New -> Други. В новия прозорец, изберете WebServices -> WSDLImporter.

Api Bing преводач

Пътят към WSDL-документ Bing Translator API, посочен в нея на първата страница на документа и да изглежда така:

"Fed" господаря си и натиснете бутона "Next":

Api Bing преводач

Учител иска от нас да избере SOAP версия, която ще използваме. Тръгваме по подразбиране и натиснете бутона "Next":

Api Bing преводач

Тук ние се обърне към капитана какво WSDL опция, трябва да импортирате. По принцип това е избрана по подразбиране ние сме напълно достатъчно, така че спокойно натиснете "Finish" и съветника ни дава разбираема единица, наречена soap.pas. В тази работа с цели WSDLImporter и да пристъпи към изпълнението на преводач.

Създаване на генеричен продукт (VCL формулярите за кандидатстване) и се свържете с употребите новосъздадените soap.pas модул.

Стига да образуват TButton компоненти, TListBox и THTTPRIO компонент от страницата (WebServices).

Сега отворете документацията за SOAP API Bing, и се опитват да се приложат редица различни функции. Да започнем с това функции, които връщат линии, например, използват метод Microsoft.Translator.Detect. Потърсете го в модула SOAP.pas:

Причина такъв метод за нас е много по-лесно и по-лесно, отколкото, да речем, да се използва един куп HTTP + XML - първо да го създадете, след което изпълни заявката и да получите отговор, а след това се анализира XML и изхода на резултата. Но един въпрос си остава: как всъщност да изпрати същото това искане? Ето защо ние поставихме върху компонента форма THTTPRIO. Остава само да го изправи, както следва:

В полето WSDLLocation пиша едно и също URL, което можете, и когато импортирате WSDL-документ (вж. По-горе) и Порт и полета услугата Изберете единственият наличен стойност. Той трябва да изглежда, както е показано по-долу:

Api Bing преводач

И сега най-интересното - ако се вгледате в методите на списък HTTPRIO компоненти, няма да го намерите, като обикновено, когато се занимават с методи HTTP като POST, GET и т.н. Те са нашите собствени и не е необходимо. - Имаме LanguageService интерфейс, чрез който получаваме необходимите данни за нас.

Създаване на бутони OnClick манипулатор и записване:

Стартирайте приложението, кликнете върху бутона и видите съобщението:

Искането е изпратено, е получил отговор. Без разбор на XML и JSON, както и други нормални операции по време на работа с HTTP. Това просто не е вярно и е удобен. ). Сложни типове данни като лесен за работа като описания, които се съдържат в модула. Например, можете да използвате Microsoft.Translator.GetLanguageNames метод, който ни връща към масив от низове - имената на езиците в езика на потребителя. Вижте описанието на метода в soap.pas:

Единственият вид данни, че може би ние не разбираме - това ArrayOfString. Потърсете го в модула:

Писане на манипулатор на един бутон. Така например, по следния начин:

Стартирайте програмата, щракнете върху бутона и да видим резултата в падащ списък:

Api Bing преводач

Ако LangNames масив ще съдържа "неразбираеми" ред на сървър, грешката няма да се случи, както и метода на работните резултати ще съдържа по-малко от 1 елемент.

И в заключение на тази статия, ние ще се опитаме да преведат текст. За да направите това, ние използваме Microsoft.Translator.GetTranslations методът, което ни връща към всички възможни преводи на текста. Нека да напише манипулатор на бутона:

Резултатът от програмата ще бъде, както следва:

Api Bing преводач

Тук, може би, и всичко останало. Мисля, че като малка ясла за работа с Bing API чрез SOAP в Делфи този пост не е наред. Poprbovat може да работи с интерпретатора API от Microsoft.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!