Я использую следующий 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.