Aflați cum să lucrați cu API în limbajul de programare C #. În această lecție vom scrie un program în Visual Studio pe Windows Forms, care va traduce textul din limba rusă în engleză și invers, cu cereri web la API-ul Yandex Translator. De asemenea, puteți descărca codul sursă dezvoltat de program.
Ce este un API?
API (scurt pentru limba engleză Application Programming Interface) este o interfață de programare a aplicațiilor. Serviciile de Internet, bibliotecile, sistemul de operare, etc. oferă dezvoltatorilor interfețe pentru a interacționa cu seturile de clase, metode și date gata făcute. Ca rezultat, putem folosi funcțiile altor servicii Internet în aplicațiile noastre.
De ce Yandex, nu Google?
Yandex Translator oferă un API gratuit, iar în Google Translate - este plătit: 20 de euro pentru fiecare milion de caractere traduse.
Merită să spunem că există o perioadă demo. Deci, dacă sunteți interesat, atunci există o oportunitate de a încerca.
Obținerea cheii API
Mai întâi de toate, trebuie să luăm cheia. care va funcționa cu API-ul Yandex Translator. În alte servicii, cheia poate fi numită un simbol de acces.
Apoi cheia va fi creată cu succes:
Copiați-l și păstrați-l, apoi avem nevoie de ea. Nu spuneți cheia nimănui. Va fi rău dacă cineva o folosește. Dacă a făcut-o, o puteți bloca și apoi puteți obține una nouă.
Pe cheia liberă pe care tocmai am primit-o, există restricții în Yandex (denumite în continuare în Acordul de utilizare) "cu privire la volumul textului tradus - până la 1 000 000 de caractere pe zi, dar nu mai mult de 10 000 000 simboluri pe lună". Dacă aveți nevoie de mai mult - atunci pentru aceasta există rate plătite pentru API.
Proiectarea interfeței programului
La început, să acceptăm direcția traducerii: programul va efectua traducerea din limba rusă în engleză și invers.
Creați un nou proiect Windows Forms în Visual Studio în limba de programare C #.
Ca și în interfața clasică a unui interpret familiar pentru fiecare dintre noi, avem nevoie de: două casete de text (TextBox) și un buton (Button) "Traduceți". În plus, vom pune un control GroupBox pe formular și vom adăuga două RadioButtons - pentru a ne asigura munca lor consecventă (există întotdeauna doar una selectată). Iată ce ar trebui să se întâmple:
Am setat dimensiunea fontului la 11 puncte. În comenzile TextBox, parametrul Multiline este setat la true - aceasta vă va permite să efectuați o ruptură de linie în câmpul text.
Crearea API pentru munca API este finalizată.
Codul de scriere
Să creăm o clasă care va funcționa cu Traducătorul API Yandex prin solicitări web. Noi numim clasa YandexTranslator.
Clasa conține singura metodă Public string Translation (șir s, string lang). Metoda acceptă argumentele ca șir: s este textul sursă pentru traducere, linia lang este direcția traducerii (de exemplu, ru-en este ruso-engleză). Returnează un șir de metode cu textul tradus.
Codul clasei YandexTranslator:
Scrierea unui program pentru a lucra cu API-ul Yandex Translator pe Windows Forms și C # este finalizat!
Descărcați codul sursă al programului sau mergeți la magazia de pe GitHub:
Structura solicitării API-ului Web
Cererea API a interpretului conține un număr de parametri necesari: key =
Cererea API Yandex returnează răspunsul ca structură JSON.
Informațiile complete cu privire la solicitările către API-ul Yandex Translator, parametrii și raspunsurile lor la server se află în documentația oficială.
Deseralizarea JSON
JSON poate fi deserializat (analizat), de exemplu, utilizând clase din biblioteca Newtonsoft.Json în C # (în programul de probă din acest articol și făcut). Puteți descărca și conecta biblioteca la proiect utilizând sistemul de management al pachetelor NuGet din Visual Studio. Pentru a face acest lucru, pe soluție, faceți clic dreapta și selectați "Gestionați pachetele NuGet pentru soluție ...":
Apoi introduceți numele bibliotecii "Newtonsoft.Json" în bara de căutare și instalați componenta Json.NET din rezultatele căutării.
De asemenea, în cod, trebuie să utilizați directiva de utilizare pentru a conecta spațiul de nume corespunzător.
Bună, poate vă veți ajuta sau spuneți-mi ce cale să săpați. În cazurile în care traduc în limba rusă în engleză apare eroarea 400 de la serverul Yandex.
Cum pot remedia problema?
Pe Java folosim URLEncoder.encode (text, "UTF-8"), dar pe C #?
Poate că textul conține caractere nevalide. Sau este totul normal în Java, probleme cu C #? Traduceți text mare?
Încerc să traduc "Bună ziua", este faptul că în codul dvs. nu există codare, atunci când traduceți caracterele rusești, acestea nu sunt acceptate.
Prin urmare, trebuie să adăugați Uncoder.
Același lucru a fost răspunsat de sprijinul Yandex
Pentru a modifica codificarea, încercați să utilizați expresia:
Unde s este șirul corect.
În loc de Unicode, puteți alege și: ASCII, UTF32, UTF7, UTF8 și Default.
și de ce cu textul copiat de orice lungime și traducerea lui există o eroare 400 (O excepție nefolosită de tip "System.Net.WebException" a apărut în System.dll
Informații suplimentare: Serverul la distanță a trimis o eroare: (400) Cerere nevalidă.)
Cel mai probabil acest lucru se datorează faptului că textul tradus conține caractere nevalide.
Vă mulțumim pentru un bun exemplu.
Aparent, aceasta este singura soluție pe deplin funcțională cu procesarea JSON în C #, care poate fi luată ca bază pentru studiu.