Получить токен с Retrofit - PullRequest
0 голосов
/ 20 марта 2019

Теперь у меня проблема с авторизацией Retrofit и API веб-сайта.

Мой код основан на следующем:

Как я могу получить токен с Retrofit2 в Android Studio?

https://github.com/codepath/android_guides/wiki/Consuming-APIs-with-Retrofit#define-the-endpoints

https://github.com/codepath/android_guides/wiki/Leveraging-the-Gson-Library

Вот мой MainActivity.java:

public class MainActivity extends AppCompatActivity {

public static final String BASE_URL = "https://api.some.some/v1/";

SomeAPI userClient;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build();

userClient  = retrofit.create(SomeAPI.class);

login();

}

private void login() {
    Auth login = new Auth("123456", "12345678");
    Call<User> call = userClient.login(login);

    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User> call, Response<User> response) {
            if (response.isSuccessful()){
                Toast.makeText(MainActivity.this, response.body().getToken(), Toast.LENGTH_SHORT).show();
                token = response.body().getToken();
            }
            else {
                Toast.makeText(MainActivity.this, "Token is not truth :(", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onFailure(Call<User> call, Throwable t) {
            Toast.makeText(MainActivity.this, "error!", Toast.LENGTH_SHORT).show();
        }
    });
}

}

Вот мой интерфейс API:

public interface SomeAPI {

    @POST("token")
    Call<User> login(@Body Auth login);

}

Вот мой Auth.java:

public class Auth {
    private String login;
    private String password;

    public Auth(String login, String password) {
        this.login = login;
        this.password = password;
    }
}

Вот мой пользователь.java:

public class User {
    private int id;
    private String email;
    private String token;

    public int getId(){
        return id;
    }

    public void setId(){
        this.id = id;
    }
    public String getEmail(){
        return  email;
    }

    public void setEmail(String email){
        this.email = email;
    }
    public String getToken(){return token;}
    public void setToken(String token){this.token = token;}
}

Об API веб-сайта на следующих снимках экрана: Request

Response

Итак, главный вопрос: что не так в моем коде?Почему я не могу получить токен?

1 Ответ

0 голосов
/ 20 марта 2019

для вашего API требуются два свойства login и password, и вы отправляете user и password см. Ваше Auth имя переменной изменения класса user в login

и

in onResponse изменение метода

if (response.isSuccessful()){
   ...
}

до

if (response.code() == 201) {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...