Spring-android Rest Template 401 и HttpMessageNotReadableException
Я установил свои конвертеры следующим образом: convertters = {StringHttpMessageConverter.class, FormHttpMessageConverter.class, MappingJackson2HttpMessageConverter.class}
Я предположил, что сначала будет пытаться строка, прежде чем пытаться сопоставить с JSON. Как я сигнализирую соответствующему конвертеру, чтобы он не пытался сопоставить с JSON, поскольку этот ответ является 401 Несанкционированным, и я хотел бы попытаться повторно пройти аутентификацию для моего случая и попытаться выполнить ту же операцию?
Или я должен просто включить блок catch с этим конкретным исключением, чтобы справиться с этим?
Получаем следующее исключение.
W / System.err: org.springframework.http.converter.HttpMessageNotReadableException: не удалось прочитать JSON: нераспознанный токен "Unauthorized": ожидалось ("true", "false" или "null") W/System.err: at [ Источник: буфер (com.android.okhttp.internal.http.HttpConnection$FixedLengthSource@f03e4ce).inputStream(); строка: 2, столбец: 14]; вложенное исключение: com.fasterxml.jackson.core.JsonParseException: нераспознанный токен "не авторизован": ожидалось ("истина", "ложь" или "ноль") W/System.err: at [источник: буфер (com.android. okhttp.internal.http.HttpConnection$FixedLengthSource@f03e4ce).inputStream (); строка: 2, столбец: 14]
1 ответ
Основываясь на вашем ответе, т.е. 401, который является Несанкционированным ответом на ошибку, установите заголовки в HttpEntity
:
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("Authorization", "Bearer <token id>");