Донецкий техникум промышленной автоматики

C #, звернення до REST API - Основи Веб-програмування

  1. Вступ
  2. опис
  3. Отримання OAuth ключа
  4. Розробка програми
  5. Translate
  6. Translation

Приклад online-перекладача, який використовує клас WebRequest для звернення до API яндекс.перекладач.

Для зручності в програмі використовується простий GUI інтерфейс.

Для зручності в програмі використовується простий GUI інтерфейс

Вступ

Онлайн перекладач, в першу чергу, це програма, що дозволяє перекладати текст з іноземної мови і навпаки, в режимі он-лайн. Переклад може бути абсолютно різним, будь-то це фраза, словосполучення, або великий і довгий літературний текст. Також онлайн перекладач може служити помічником в листуванні з закордонними друзями або колегами, в перекладі будь-яких іноземних статей. Зрештою, перекладач може бути корисний в тому випадку, коли Ви намагаєтеся щось комусь сказати іноземною мовою.

опис

Для створення програми-перекладача використовувалося додаток Visual Studio 2013, а також додатковий фреймворк Json.NET.

Додаток написано на WindowsForms, на мові C #. Для створення дизайну додатки була використана програма Adobe Photoshop CS5.

За допомогою цього додатка можна перевести текст на 9 різних мов: Англійська, Російська, Іврит, іспанська, італійська, китайська, німецька, французька, Японський. Переклад здійснюється за допомогою веб-запитів до API яндекс.перекладач.

Для перекладу тексту досить ввести вихідний текст в перше вікно, вказати початковий мову, а також потрібну мову перекладу у спливаючих боксах. Для швидкої зміни обраних мов між собою можна скористатися центральною кнопкою у вигляді двох стрілок. Як тільки Ви вибрали потрібні мови і ввели необхідний текст, натисніть кнопку «Переклад». Перекладений текст відобразиться в другому вікні.

Отримання OAuth ключа

Щоб працювати з API Яндекс Перекладача, треба було отримати API-ключ (OAuth токен доступу).

OAuth-токен - це спеціальний код, що дозволяє доступ до даних конкретного користувача. Для кожного користувача (логіну в Яндекс.Директі, від імені якого здійснюються запити до API) необхідно отримати окремий токен, який слід вказувати при виклику методів.

Ключ був отриманий на сайті Яндекс https://tech.yandex.ru/translate/

Розробка програми

Розташування об'єктів додатка було вироблено за допомогою WindowsForms, а потім оформлено за допомогою зображень, створених в Adobe Photoshop CS5. Код додатка написаний на мові програмування C #.

Додаток складається з трьох класів: Form1, Translate і Translation.

Translate

Клас Translate описує веб-запит до серверів яндекс.перекладач і десеріалізацію JSON отриманої відповіді. Запит до API перекладача містить ряд обов'язкових параметрів - це:

key = <API-ключ>

& Text = <перекладається текст>

& Lang = <напрямок перекладу>.

Необов'язкові параметри, такі як формат і опції перекладу, в додатку не використовуються.

Так як відповідь приходить у вигляді структури даних JSON, потрібно його розпарсити. Для цього був встановлений додатковий фреймворк Json.NET і підключена бібліотека Newtonsoft.Json.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; // Пакет JSON namespace TranslatorForWeb {class Translate {public string TranslateText (string s, string language) {if (s. Length> 0) // Перевірка на непорожню рядок {// --- Запит --- WebRequest request = WebRequest. Create ( "https://translate.yandex.net/api/v1.5/tr.json/translate?" + "Key = trnsl.1.1.20170125T084253Z.cc366274cc3474e9.68d49c802348b39b5d677c856e0805c433b7618c" // Ключ + "& text =" + s // Текст + "& lang =" + language); // Мова WebResponse response = request. GetResponse (); // -------------------- // --- розпарсити JSON відповідь. Я скачав фреймворк Json.NET using (StreamReader stream = new StreamReader (response. GetResponseStream ())) {string line; if ((line = stream. ReadLine ())! = null) {Translation translation = JsonConvert. DeserializeObject <Translation> (line); s = ""; foreach (string str in translation. text) {s + = str; }}} // ------------------ return s; } Else return ""; }} Class Translation {public string code {get; set; } Public string lang {get; set; } Public string [] text {get; set; }}}

Translation

Даних клас описує структуру JSON-відповіді на запит до API перекладача.

Json/translate?