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 и другие изменения, но я не могу понять, где проблема или где искать. Я действительно надеюсь, что некоторые из вас могли бы дать мне подсказку!!! Большое спасибо!

0 ответов

Другие вопросы по тегам