Rest API с токеном аутентификации - PullRequest
0 голосов
/ 28 июня 2018

У меня есть приложение для Android, вызывающее Rest API с токеном аутентификации, со следующим кодом

private void apiCall(){
    AsyncHttpClient client = new AsyncHttpClient();
    RequestParams param = new RequestParams();
    client.addHeader("IDENTITY_KEY",TOKEN);
    client.get(URL, param, new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
             mTextMessage.setText(statusCode);
        }

        @Override
        public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
            mTextMessage.setText(statusCode+"");
        }
    });
}

проблема в том, что когда я запускаю приложение, оно возвращает 0, ПОЧЕМУ? URL и TOKEN объявлены и инициализированы вне метода.

1 Ответ

0 голосов
/ 28 июня 2018

Я бы порекомендовал вам использовать для этого библиотеку дооснащения .

Допустим, ваша база URL-адресов http://baseurl.com/api, и вы должны выполнить GET-запрос для входа в систему, указав адрес электронной почты и пароль. Я предполагаю, что ваш API вернет объект User как JSON.

Api.java

@GET("login")
Call<LoginResponse> verifyLogin(@Query("email") String email, @Query("password") String password);

Если вам нужно выполнить вызов API, выполните следующее

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://baseurl.com/api/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
Api api = retrofit.create(Api.class);
Call<LoginResponse> responseCall = api.verifyLogin("email","password");
    responseCall.enqueue(new Callback<ProductResponse>() {
        @Override
        public void onResponse(Call<ProductResponse> call, Response<ProductResponse> response) {
            if (response.isSuccessful()){
                //do whatever you need, 
            }
        }

        @Override
        public void onFailure(Call<ProductResponse> call, Throwable t) {

            Toast.makeText(context, "There was an error.", Toast.LENGTH_SHORT).show();
            Log.e("error",t.getMessage().toString());

        }
    });

Примечание: LoginResponse является классом POJO. Вы должны создать класс POJO для выполнения действий по модернизации. Это довольно легко. Вы можете узнать больше о Retrofit здесь документ 1 документ 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...