Google Translate API Response для браузера и приложения для Android \ Почтальон - арабские персонажи - PullRequest
0 голосов
/ 15 мая 2019

Я использую следующий URL-адрес API Google.

Browser URL Example
> URL Example 1 (URL.encoded): http://translate.googleapis.com/translate_a/single?client=gtx&sl=ar-AE&tl=en-US&dt=t&q=%D9%85%D8%B1%D8%AD%D8%A8%D8%A7

> URL Example 2: http://translate.googleapis.com/translate_a/single?client=gtx&sl=ar-AE&tl=en-US&dt=t&q=مرحبا

> Android okhttp Example: "http://translate.googleapis.com/translate_a/single?client=gtx&" +
                "sl=" + sourceLanguage +
                "&tl=" + targetLanguage + "&dt=t&" +
                "q=" + URLEncoder.encode(text, "UTF-8");

Преобразование арабского языка в английский. Если я выполняю следующий URL-адрес в браузере Chrome, он дает правильные результаты.Но когда я выполняю следующий URL с помощью okHttp, я получаю неправильный ответ.

Ответ (Chrome) Правильные результаты: [[["Hi", "مرحبا", null, null, 1]], null, "ar"]

Response okhttp (android) Неправильные результаты: [[["I ... ط ± طط¨ط§", "ظ… ط ± طط¨ط§", null, null, 3]], null, "ar"]

Код OkHttp

OkHttpClient client = new OkHttpClient();

            Log.e("Translate TEXT", URL);

            Call call = client.newCall(new Request.Builder().addHeader("Content-Type","application/json; charset=UTF-8").url(URL).get().build());
            Response response = call.execute();
            if (response.code() == 200 || response.code() == 201) {
                String resp = response.body().string();
                JSONArray jsonArray = new JSONArray(resp);
                translatedText = jsonArray.getJSONArray(0).getJSONArray(0).getString(0);
                Log.e("RESPONSE 1", translatedText );
}

Я пробовал URLEncoder, UriEncoder и некоторые другие решения, доступные в StackOverFlow.

1 Ответ

0 голосов
/ 19 мая 2019
URL = "http://translate.googleapis.com/translate_a/single?client=gtx&" +
               "sl=" + sourceLanguage +
               "&tl=" + targetLanguage + "&dt=t&ie=UTF-8&oe=UTF-8&" +
               "q=" + URLEncoder.encode(text, "UTF-8");

Я решил проблему, добавив 2 параметра: «т.е. = UTF-8 & oe = UTF-8». Благодаря следующей ссылке на ответ https://forum.golangbridge.org/t/google-translate-api-issue-solved/5059/2

...