Munka api Yandex fordító - programozás C, C # és java
Megtanuljuk, hogyan kell dolgozni az API C # programozási nyelv. Ebben a leírásban, akkor írj egy programot Visual Studio a Windows Forms, amely lefordítja a szöveget oroszról angolra és fordítva Web API-kéréssel Yandex Translate. Azt is letölthető a forráskód által kidolgozott programot.
Mi az API?
API (rövidítése Application Programming Interface) - egy olyan alkalmazás programozási felület. Internet szolgáltatások, könyvtárak, operációs rendszer, stb .. A fejlesztők felületek kölcsönhatásban áll a készlet kész osztályok, módszereket és adatokat. Ennek eredményeként, fel tudjuk használni a funkciókat más internetes szolgáltatásokat a saját alkalmazásokat.
Miért Yandex mint a Google?
Yandex fordító egy ingyenes API, valamint a Google Translate - ez fizetni: $ 20 minden millió átadott karakter.

Azt mondják, hogy van egy próbaidőszak. Tehát, ha érdekel, akkor lehetősége van arra, hogy megpróbálja.
Előállítás API-kulcs
Az első és legfontosabb, meg kell, hogy a legfontosabb. amely együtt fog működni az API Yandex Translate. Más kulcsfontosságú szolgáltatások nevezhetjük egy hozzáférési tokent.

Ezután a kulcsot sikeresen létrehozva:

Másolás, és mentse magát, akkor szükségünk lesz. Ne árulja el senkinek a kulcsot. Ez lesz rossz, ha valaki fogja használni. Ha mégis ez történt - lehet lezárni, akkor kap egy újat.
Egy ingyenes kulcsot, amelyet az imént kapott, vannak korlátozások Yandex (az idézet a Felhasználói megállapodás) „az összeg fordítandó szöveg -, amelynek mértéke legfeljebb 1 millió karakter naponta, de nem több, mint 10 millió karakter egy hónapban.” Ha több kell -, hogy létezik erre útdíj tarifák API.
Tervezése az interfész
Az elején, hadd egyetért a fordítás irányát: a program elvégzi a fordítást oroszról angolra és fordítva.
Hozzon létre egy Visual Studio új Windows Forms projekt a C # programozási nyelv.
Mint a klasszikus Google fordító, amely ismerős mindannyiunk, szükségünk van: két szövegdobozok (TextBox) és egy gombra () „átutalás”. Ezen kívül helyezze az ellenőrzések formájában csoportpanelen és akkor adjunk hozzá két RadioButton kapcsoló - így tudjuk biztosítani, hogy összehangolt munkája (kiválasztva mindig marad az egyetlen). Itt mit kell rendelkezniük:

betűméret elindultunk egyenlő 11 pont. A TextBox vezérlő paraméter többsoros tett, hogy igaz legyen - ez elvégzi a beviteli mezőbe a sortörés.
Program létrehozása interfész API befejeződött.
írni a kódot
Hozzon létre egy osztályt, amely ezt a munkát a Yandex Translate API segítségével webes kérések. Név az osztály YandexTranslator.
Az osztály tartalmaz egy módszert nyilvános húr Fordítás (string s, string lang). A módszer figyelembe kachetve argementov: s vonal - a forrás szöveg fordításra lang húr - az irányt a fordítás (pl ru-en - az orosz-angol). Metódus visszaad egy karakterláncot a lefordított szöveget.
Class Code YandexTranslator:
Írása programot, hogy működjön együtt az API Yandex tolmács Windows Forms és a C # nyelv befejeződött!
Töltse le a forráskód a program, vagy menjen a repository GitHubról:
A szerkezet a web-lekérdezés API
Kérelmet az API fordító számos olyan kötelező paraméter - jelentése: key =
Kérdés API Yandex visszaadja a választ JSON szerkezetét.
Részletes információ a API-kérések Yandex fordító, paramétereik és a szerver válaszok a hivatalos dokumentációt.
JSON deserialization
JSON lehet deserialize (parse), például osztályok segítségével a könyvtári Newtonsoft.Json C # (a példában program ezt a papírt és ez tette). Könyvtár, akkor töltse le és csatlakozzon a projekthez a csomagkezelő rendszer NuGet Visual Studio. Erre a célra, a megoldás a jobb gombbal, és válassza ki a „Csomagok kezelése NuGet megoldásokat ...”:

Ezután a keresőmezőben adja meg a könyvtár nevét „Newtonsoft.Json”, és a keresési eredmény eléréséhez Json.NET komponenst.

Szintén a kódot kell a segítségével segítségével irányelv csatlakoztassa a megfelelő névteret.
Szia, talán tud segíteni, vagy mondd meg, merre kell ásni. Amikor fordítására orosz angol 400 hibát az Yandex szerver.
Hogyan tudom kijavítani?
Java-használat URLEncoder.encode (szöveg, "UTF-8"), de a C #?
Lehet, hogy a szöveg érvénytelen karaktereket tartalmaz. Vagy Java minden rendben van, a probléma a C #? Nagy szöveg mérete lefordítani?
Próbálom lefordítani „Hello”, az a tény, hogy a kód nem rendelkezik ahhoz, hogy a kódolás amikor át az orosz karakterek használata nem támogatott.
Ezért szükséges, hogy adjunk Uncoder.
Ez ugyanaz a dolog azt mondták, a támogatást a Yandex
Ha módosítani szeretné a kódolás, próbálja meg használni a kifejezést:
Ahol s - a megfelelő sort.
Ehelyett Unicode is ki lehet választani: ASCII, UTF32, UTF7, UTF8 és az alapértelmezett.
és miért, a másolt szöveg tetszőleges hosszúságú és fordítási hiba 400 (Nem kezelt kivétel „típusú System.Net.WebException” történt System.dll
Kiegészítő információk: Távoli szerver hibát (400), hogy érvénytelen kérelem).
A legvalószínűbb ennek oka az a tény, hogy a fordítandó szöveg érvénytelen karaktereket tartalmaz.
Köszönöm kiváló példája.
Úgy látszik, ez az egyetlen teljesen működő megoldást feldolgozására JSON C #, ami lehet alapul venni a tanulmány.