|
|
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
Доброго всем времени суток! Пытаюсь победить Яндекс-Переводчик, точнее - заставить программу работать с этим Сервисом... Видимо не я первый занимаюсь этой темой, но как ни странно - инфы в Инете мало... ... Программа очень проста - два ТEdit и Батон, одна функция и процедура: Код: pascal 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. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. Дополнительно: - на форме присутствует компонент IdHTTP1 и IdSSLIOHandlerSocketOpenSSL1 ; - в каталоге с исполняемым файлом лежат libeay32.dll , ssleay32.dll ; - в свойстве IOHandler компонента IdHTTP1 указан IdSSLIOHandlerSocketOpenSSL1 ; - Yandex-Key упущен по понятным причинам. - Делфи XE3. Все вроде сделал как велит Яндекс и подсказывают скудные материалы Инета, но получаю в ответ: " IOHandler value is not valid " Помогите пожалуйста разобраться, кто в теме?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 12:33 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
Bellic, в коде для запроса используется IdHTTP2, поэтому после Код: pascal 1. 2. нужно добавить Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 12:41 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
уточняю: функцию YandexTranslate нужно перенести в класс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 12:44 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
asutp2Bellic, в коде для запроса используется IdHTTP2, поэтому после Код: pascal 1. 2. нужно добавить Код: pascal 1. Добавил, но теперь ругается, что не ведает о IdSSLIOHandlerSocketOpenSSL1 , хотя он вроде объявлен выше: Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 12:47 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
Еще раз - перенеси YandexTranslate в класс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 12:52 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
asutp2уточняю: функцию YandexTranslate нужно перенести в класс Не совсем врубаюсь что и как, если не трудно - можете подправить? Вот ссылка на проект: Yandex_Translate Буду Вам очень признателен! ... Сам вижу что у меня получилось два штуки: IdHTTP1 и IdHTTP2 Один из uses IdHTTP, второй - Компонента на форме...((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 12:56 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
Bellic, 1. следующей строкой после Код: pascal 1. нужно добавить новую строку Код: pascal 1. 2. ниже, в уже существующей строке Код: pascal 1. нужно изменить на Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 13:01 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
asutp2 , сделал... )) Спасибо! До этого как-то не приходилось объявлять функции как процедуры..) ... Все скомпилировалось без ошибок, только получил вот это в ответ: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 13:10 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
Bellic, здесь уже нужно разбираться с запросом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 13:17 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
asutp2Bellic, здесь уже нужно разбираться с запросом) Вот нашел еще немного другую реализацию Функции-Перевода: (Ее кстати не надо добавлять в Класс, как предыдущую!) Код: pascal 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. Код: pascal 1. 2. В ответ выдает в XML-формате: Код: xml 1. 2. (code 200 - это ответ сервера "Операция выполнена успешно") Вместо символов "??????????????????" должен быть текст на Английском языке, но его нету!..(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 13:31 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
... Попробовал в строке "result := UTF8ToWideString(OutS.Text);" всяко разно: - UTF8EncodeToShortString - UTF8ToString - UTF8ToWideString - UTF8ToUnicodeString - UTF8EncodeToShortString Результат аналогичен - "??????????????" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 15:36 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
Сделайте Код: pascal 1. и посмотрите, что в самом файле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 16:50 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
У меня нормально работает Код: pascal 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. ComboBox5 и ComboBox6 - языки Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 16:53 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Сделайте Код: pascal 1. и посмотрите, что в самом файле Все то же самое и в файле! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 17:05 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
terlalex , к сожалению я с JSON пока не знаком, из XML думаю выудить перевод будет гораздо проще.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 17:11 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
Впрочем - подправив строку запроса, получил и JSON: Код: javascript 1. ... А тут то возможно и проще распарсить будя!..)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 17:16 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
Изменил японскую фразу на по-короче(Отобразится ли тут?): Код: sql 1. Хренушки..((( В общем - это два иероглифа, с переводом на Английский - "YES" ... Что то мне так кажется, что у Яндекса нужно еще попросить другую кодировку при переводе!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 17:49 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
В общем так: - для функции (методом GET) Код: pascal 1. проблема наличия в ответе "???????" (восклицательных знаков) найдена... в моей невнимательности..)) Перечитал еще раз описание ( https://tech.yandex.ru/translate/doc/dg/reference/translate-docpage/), а именно примечание: автор"Для исходного текста обязательно используйте URL-кодирование" Далее, сходил на первый попавшийся сервис( http://xinit.ru/web_tools/##urlencode) и подсунув японские иероглифы "はい", получил строку: Код: pascal 1. , которую и передал серверу. В результате - правильный, ожидаемый перевод - " Yes " Осталось найти как выполнить URL-преобразование в Delphi... - для функции (методом Pos SSL) Код: pascal 1. Пока все на том же месте... - 400 Bad Request ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 21:36 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
TIdURI.URLEncode(...) юнит IdURI ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 22:06 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
По теме "URL-кодирование" пригодилась следующая функция: Код: pascal 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. 55. Применение: Код: pascal 1. 2. 3. 4. А теперь можно расслабиться, выбрать XML- или JSON-вариант запроса и думкать - как проще распарсить из Оных полученный перевод..)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 22:09 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
Vizit0rTIdURI.URLEncode(...) юнит IdURI Попробовал самым первым, получил " Protocol field is empty ", не стал искать причину и использовал функцию выше... А может зря не искал???..))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 22:15 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
потому что адрес должен быть полным, начинаться с http(s):// ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 22:37 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
Vizit0rпотому что адрес должен быть полным, начинаться с http(s):// Ты имеешь ввиду, что следующую строчку Код: pascal 1. нужно было ВСЮ пропустить через Код: pascal 1. 2. 3. ??? Могу попробовать..) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 22:50 |
|
||
|
Работаем с Яндекс-Переводчиком
|
|||
|---|---|---|---|
|
#18+
Vizit0rпотому что адрес должен быть полным, начинаться с http(s):// Попробовал как сказал выше - тоже все получилось Ок! Спасибо! Ну а для парсинга из JSON - удачно подсказал terlalex : Код: pascal 1. где TR - ответ, полученный от Сервера в формате JSON... P.S. Осталась самая "малость" - это боевое крещение в битве с Яндекс-сервером, на последовательных запросах, по своему числу стремящихся к бесконечности!...))) Но это уже Завтра! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 23:07 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39618135&tid=2041116]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 290ms |
| total: | 556ms |

| 0 / 0 |
