REST-запрос для Google Translation API с использованием Retrofit в Android каждый раз вызывает onFailure
Я публикую свой код здесь:
public class APIResponse {
@SerializedName("data")
@Expose
private Data data;
/**
* No args constructor for use in serialization
*
*/
public APIResponse() {
}
/**
*
* @param data
*/
public APIResponse(Data data) {
super();
this.data = data;
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
}
public class Data {
@SerializedName("translations")
@Expose
private List<Translation> translations = null;
/**
* No args constructor for use in serialization
*
*/
public Data() {
}
/**
*
* @param translations
*/
public Data(List<Translation> translations) {
super();
this.translations = translations;
}
public List<Translation> getTranslations() {
return translations;
}
public void setTranslations(List<Translation> translations) {
this.translations = translations;
}
}
public class Translation {
@SerializedName("translatedText")
@Expose
private String translatedText;
@SerializedName("detectedSourceLanguage")
@Expose
private String detectedSourceLanguage;
/**
* No args constructor for use in serialization
*
*/
public Translation() {
}
/**
*
* @param detectedSourceLanguage
* @param translatedText
*/
public Translation(String translatedText, String detectedSourceLanguage) {
super();
this.translatedText = translatedText;
this.detectedSourceLanguage = detectedSourceLanguage;
}
public String getTranslatedText() {
return translatedText;
}
public void setTranslatedText(String translatedText) {
this.translatedText = translatedText;
}
public String getDetectedSourceLanguage() {
return detectedSourceLanguage;
}
public void setDetectedSourceLanguage(String detectedSourceLanguage) {
this.detectedSourceLanguage = detectedSourceLanguage;
}
}
Классы APIResponse, Data и Translation находятся в трех разных файлах.java.
Это мой интерфейс REST:
public interface TranslationRESTInterface {
@POST("?")
public Call<APIResponse> translateWord(@Query("q") String inputWord,
@Query("target") String targetLang,
@Query("key") String apiKey);
}
И это мой код для выполнения запроса в моей основной деятельности (на данный момент, просто чтобы убедиться, что все работает хорошо):
public class MainActivity extends AppCompatActivity {
private TranslationRESTInterface restInterface;
final Context context = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
final TextView textViewTranslation = findViewById(R.id.textViewAAA);
Retrofit retrofit = new Retrofit.Builder().baseUrl(Commons.hostName)
.addConverterFactory(GsonConverterFactory.create()).build();
restInterface = retrofit.create(TranslationRESTInterface.class);
restInterface.translateWord("house", "it", Commons.apiKey)
.enqueue(new Callback<APIResponse>() {
@Override
public void onResponse(Call<APIResponse> call, Response<APIResponse> response) {
Log.d("out","ok");
APIResponse apiResponse = response.body();
Data dataResponse = apiResponse.getData();
List<Translation> list =
dataResponse.getTranslations();
String a = list.get(0).getTranslatedText().toString();
textViewTranslation.setText(a);
Log.d("trad",a);
Toast toast = Toast.makeText(context, a ,0);
toast.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL
,0,0);
toast.show();
}
@Override
public void onFailure(Call<APIResponse> call, Throwable t) {
Log.d("out","fail");
}
});
}
}
Как я вижу в Logcat и в моей деятельности, Call не дает мне ответа, через некоторое время он всегда вызывается методом onFailure. Я пытался изменить запрос POST в интерфейсе REST и другие изменения, но я не могу понять, где проблема или где искать. Я действительно надеюсь, что некоторые из вас могли бы дать мне подсказку!!! Большое спасибо!