Api interpret bing

Cu mult timp în urmă, aveam de gând să mă ocup de protocolul SOAP, să văd cum să lucrez cu el, cum să îl folosesc, etc. dar din cauza lipsei de timp liber, din cauza reticenței obișnuite de a deranja ceva nou, încă nu am reușit să scriu o aplicație utilizând SOAP. De obicei, atunci când am înțeles cu unele Web API-serviciu, care a fost o alegere a două protocoale - HTTP pur sau SOAP am ieșit în primul rând, și, de fapt, acum am dat seama că nimic :).







Sa dovedit că pentru a dezvolta un client SOAP mic in Delphi elementar și ordinea de mărime mai ușor decât folosind o bibliotecă separată pentru lucrul cu HTTP (Synapse. WinInet, Indy, etc.), în colaborare cu bibliotecile, cum ar fi MSXML, NativeXML (pentru lucrul cu XML) sau SuperObject (pentru JSON).

De exemplu, am decis să scriu un mic client pentru a lucra cu API-ul Bing Translator (traducătorul Google a fost deja acolo - acum a decis să vadă ce au făcut la Microsoft).

Pentru a începe cu câteva cuvinte introductive despre ceea ce reprezintă SOAP.

SOAP este un protocol pentru schimbul de mesaje structurate într-un mediu distribuit de calcul. Inițial, SOAP a fost destinat în primul rând pentru implementarea apelurilor de procedură la distanță (RPC). Acum, protocolul este folosit pentru a schimba mesaje aleatoare în format XML, și nu doar pentru procedurile de apelare.

Pe aceeași pagină a Wiki puteți afla despre lipsa de SOAP - creșterea cantității de date trimise. Dar astăzi nu este atât de important pentru noi, ci trebuie să rezolvăm problema.

Notă: Dacă sunt foarte importante pentru cantitatea de date să fie transferate, este posibil să se aducă următoarea clasificare a schimbului de date într-o varietate de formate (cu excepția Text simplu) și folosind protocoale diferite (unul dintre cei care mi-acum mai mult sau mai puțin cunoscute):

  1. HTTP + SOAP - cel mai mare volum;
  2. HTTP + XML - volumul mediu;
  3. HTTP + JSON - cel mai mic volum;

Toate tipurile de date, operațiunile, metodele de livrare a mesajelor de la server la client și înapoi sunt localizate pe partea serverului sub forma unui document WSDL. Tot ce ne este cerut este să importăm într-un fel acest document și să îl prezentăm sub formă de tipuri, clase și obiecte Delphi deja cunoscute.

Deoarece WSDL este limbajul standard pentru descrierea serviciilor web, atunci, în consecință, Delphi asigură importul convenabil al acestor documente și reprezentarea lor în forma de care avem nevoie, adică sub forma unei unități separate Delphi.

Acum, să mergem direct la exemplul de lucru cu API-ul Bing prin SOAP.

Înainte de a ne rula Delphi și de a începe să dezvoltăm mini-traducătorul nostru, trebuie să ne înregistrăm cu Bing și să obținem o cheie de acces (AppID) la API de pe pagina dezvoltatorului. Ne înregistrăm, primim și ne amintim ID-ul nostru de identificare.

Acum rulați Delphi (Am Delphi XE) și selectați File -> New -> Other din meniu. În fereastra care se deschide, selectați WebServices -> WSDLImporter.

Api interpret bing






Calea către documentul WSDL Bing Translator API este listată pe prima pagină a documentației și arată astfel:

"Feed" către maestrul său și faceți clic pe "Next":

Api interpret bing

Vrăjitorul ne cere să alegem versiunea SOAP pe care o vom folosi. Lăsați valoarea implicită și apăsați "Next":

Api interpret bing

Aici, expertul ne va întreba ce opțiuni WSDL trebuie să importăm. Practic, ceea ce este ales în mod implicit este suficient pentru noi, deci cu o suflare liniștită "Finish" și expertul creează o unitate complet înțeleasă numită soap.pas. Aceasta completează lucrul cu WSDLImporter și continuă să implementeze funcțiile unui interpret.

Creați o aplicație obișnuită (VCL Forms Application) și conectați-vă în modulul nou creat soap.pas.

De asemenea, abandonăm componentele TButton, TListBox și THTTPRIO pe formularul din formular (WebServices).

Acum deschideți documentația SOAP Bing API și încercați să implementați mai multe funcții diferite. Să începem cu funcții care returnează șiruri de caractere, de exemplu, vom folosi metoda Microsoft.Translator.Detect. Vom vedea descrierea sa în modulul SOAP.pas:

Pentru că o astfel de metodă pentru noi este mult mai simplu și mai ușor decât, să spunem, de a folosi o mulțime de HTTP + XML - mai întâi a crea URL-ul, și apoi executați interogarea și a obține un răspuns, iar apoi analiza XML și de ieșire rezultatul. Dar există o întrebare: cum să trimiteți această solicitare? De aceea am pus componenta THTTPRIO pe formular. Rămâne doar să o configurați după cum urmează:

În câmpul WSDLLocation, scrieți aceeași adresă URL ca și când importați documentul WSDL (vedeți mai sus) și selectați singurele valori disponibile în câmpurile Port și Service. Ar trebui să arate astfel:

Api interpret bing

Și acum cel mai interesant - daca te uiti la metodele de componente lista HTTPRIO, nu veți găsi un astfel de obicei, atunci când se ocupă cu metode HTTP, cum ar fi POST, GET, etc Acestea sunt propriile noastre și nu au nevoie -. Avem interfata LanguageService prin care obținem datele de care avem nevoie.

Creați butonul OnClick și scrieți:

Rulați aplicația, faceți clic pe buton și vedeți mesajul:

Solicitarea a fost trimisă, răspunsul a fost primit. Fără parsarea XML și JSON și alte operații comune atunci când se lucrează cu HTTP. Nu este destul de simplu și convenabil? ). Cu tipuri complexe de date, este la fel de ușor de lucru, pentru că descrierea lor este cuprinsă în modul. De exemplu, puteți utiliza metoda Microsoft.Translator.GetLanguageNames, care returnează un șir de șiruri - nume de limbi în limba utilizatorului. Vezi descrierea metodei în săpun.pas:

Singurul tip de date care poate fi înțeles greșit este ArrayOfString. Vedeți descrierea din modul:

Noi scriem butonul de manipulare a butoanelor. De exemplu, aceasta:

Rulați programul, dați clic pe buton și vedeți rezultatul din lista:

Api interpret bing

Dacă un șir "incomprehensibil" serverului este conținut în matricea LangNames, atunci nu va exista nici o eroare, iar rezultatul metodei va conține un element mai mic.

Și, în încheierea acestui scurt articol, vom încerca să traducem un text. Pentru a face acest lucru, vom folosi metoda Microsoft.Translator.GetTranslations, care returnează toate traducerile de text posibile. Să scriem un astfel de handler la buton:

Rezultatul execuției programului va fi următorul:

Api interpret bing

Aici, poate, asta e tot. Cred că, ca o foaie ieftină pentru a lucra cu API-ul Bing prin SOAP în Delphi, acest post va veni la îndemână. Puteți încerca să lucrați cu API-ul traducătorului de la Microsoft.







Articole similare

Trimiteți-le prietenilor: