Нет ответа на POST запрос retrofit2

130
17 января 2020, 07:20

Пытаюсь реализовать REST клиент для андройда. POST запрос не возвращает json ответ. В метод onResponse даже не заходит во время отладки. ip сервера внутренний, по внешнему ip так же не работает. REST клиент с телефона тоже срабатывает без ошибок. Отладку произвожу на Galaxy S8, разрешения на интернет в манифесте прописаны. Точно такой же код в intelliJ IDEA работает на ура.

MainActivity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final TextView tView = findViewById(R.id.tView);
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://10.200.2.5:8080")
            .addConverterFactory(JacksonConverterFactory.create())
            .build();
    engineApi engineApi = retrofit.create(engineApi.class);
    Creds creds = new Creds("user","user");
    Call<Token> siignin = engineApi.signin(creds);
    siignin.enqueue(new Callback<Token>() {
        public void onResponse(Call<Token> call, Response<Token> response) {
            if(response.isSuccessful()) {
                Token token = response.body();
                tView.append(token.getToken());
            }
        }
        public void onFailure(Call<Token> call, Throwable throwable) {
            tView.append("FAILLLLL");
        }
    });
}

Token.java:

public class Token {
    @JsonProperty("token")
    private String token;
    @JsonProperty("type")
    private String type;
    public Token(String token, String type){
    }
    public Token(){
    }
    public String getToken() {
        return token;
    }
    public void setToken(String token) {
        this.token = token;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
}

Creds.java:

public class Creds {
    @JsonProperty("username")
    private String username;
    @JsonProperty("password")
    private String password;
    public Creds(){
    }

    public Creds(String username, String password){
        this.username = username;
        this.password = password;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

engineApi.java

public interface engineApi {
    @Headers("Content-Type: application/json")
    @POST("/api/auth/signin")
    Call<Token> signin(@Body Creds creds);
}
Answer 1

На android 9.0 нужно включить поддержку cleartext. В файле манифеста в секции <application></> указать android:usesCleartextTraffic="true"

READ ALSO
Ошибка Spring не выводит страницу в браузере

Ошибка Spring не выводит страницу в браузере

Я написал проект на спринге который должен через JSP открывать страницу, и там выводит информацию из MySQL о студентах(имя, фамилия, фото) когда...

136
Лямбды в Java 8, что лучше использовать - Function.identity() или t-&gt;t?

Лямбды в Java 8, что лучше использовать - Function.identity() или t->t?

Вопрос по использованию Functionidentity() метода

133
Самопроизвольный выход из цикла в AsyncTask

Самопроизвольный выход из цикла в AsyncTask

Есть цикл получения данных из xml файлаОн выполняется в AsyncTask doInBackground

128
Ошибка при возврате List в responce SOAP

Ошибка при возврате List в responce SOAP

Ошибка при возврате List в responce SOAP

145