Я использую аннотации Android для управления связью моего клиента с веб-сервисом.Android Аннотации Вход с ошибкой 401 Несанкционированный
Когда я пытаюсь войти в конечную точку с помощью AA, я получаю ошибку 401 Unauthorized, но я могу успешно войти в эту конечную точку и получить ответ, когда я использую Postman.
кодMy Rest Client, как это:
@Rest(rootUrl = NetworkConstants.BASE_URL, converters = {GsonHttpMessageConverter.class, StringHttpMessageConverter.class},
interceptors = {RestAuthInterceptor.class})
public interface RestClient extends RestClientHeaders, RestClientErrorHandling {
@Post(NetworkConstants.OFFICER_LOGIN)
LoginModel loginOfficer(LoginModel.LoginRequest request);
}
И мой Логин Модель выглядит так:
public class LoginModel {
@SerializedName("id")
public String id;
@SerializedName("ttl")
public int ttl;
@SerializedName("userId")
public int userId;
@SerializedName("created")
public Date created;
public static class LoginRequest {
@SerializedName("email")
public String email;
@SerializedName("password")
public String password;
}
}
И URL я использую как это:
public static final String BASE_URL = "https://api.com/api/";
public static final String LOGIN = "login";
И класс перехватчика, который я использую, таков:
@EBean(scope = EBean.Scope.Singleton)
public class RestAuthInterceptor implements ClientHttpRequestInterceptor {
@Override
public org.springframework.http.client.ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
HttpHeaders headers = request.getHeaders();
HttpAuthentication auth = new HttpBasicAuthentication("emailadress", "password");
headers.setAuthorization(auth);
return execution.execute(request, body);
}
}
Как я уже говорил ранее, когда я использую эти значения в Postman, я получил успешный ответ, но когда я попробую это в приложении, у меня возникла ошибка 401.
Я пробовал некоторые решения и пытался добавить BasicHttpAuth в перехватчик, но не работал, интересно, является ли это общей проблемой или есть проблема с API.
Примечание: URL-адреса конечной точки API и значения заголовков в классе Interceptor в вопросе не являются реальными значениями, я изменил их для обеспечения конфиденциальности.
Спасибо за помощь.
Ваш код выглядит нормально. Попробуйте зарегистрировать запрос с помощью [this] (https://gist.github.com/WonderCsabo/75cea06360a8faab304b) запроса фабрики. – WonderCsabo