БрифинГ ДО «технические вещи»
Не новый к работе с Модернизированный, но наткнулся на это странное поведение, которое я с очень трудное время, чтобы понять и исправить, У меня есть два веб-сервиса, оба работают нормально, как и ожидалось в Postman и iOS, но только один работает в Retrofit, а не в другом,
В моей защите я могу сказать, что получаю (неавторизованный) ответ, что означает, что я смог ударить сервер и получить результат
В защите разработчика API он говорит, что он работает в Postman и других устройствах, поэтому не проблема обслуживанияПолучение 401 Несанкционированное ретрофитом, но работает в Почтальон и Swift
Если какой-либо эксперт по доработке, расскажите мне, что может быть сделано за моей спиной, чтобы получить эту ошибку?
ТЕХНИЧЕСКИЕ STUFF
Говоря о типе службы, он содержит Авторизация Bearer лексема в качестве заголовка, который истекает через каждые 6 часов и не содержит Params вообще (так оно должно быть просто, правда?) И простой URL http://hashchuna.nn-assets.com/api/locations
К сожалению, маркер заголовка наклоняю совместно с действительным ключом, потому it'l быть истек до любой желающий может попробовать, но здесь это все равно Авторизация Bearer 3d44626a55dbb024725984e0d37868336fd7e48a
, что я попытался
Я использую okhttp перехватывать добавить Authorization заголовок для запроса с использованием как AddHeader/заголовок метода, без пробелов в URL потому что не г нет Params
Getting 401 unauthorized error in retrofit?
Java: Android: Retrofit - using Call but, Response{code = 401,message=unauthorized}
https://github.com/square/retrofit/issues/1290
Но не они помогли
ПРЕДУПРЕЖДЕНИЕ
Теперь сложная часть, чтобы иметь в виде, маркер, когда истек должны дать 401 ошибки, которая, как ожидается, но проблема даже для недавно созданных лексем я получаю 401, которая является моей основной проблемой
LOG
D/OkHttp: --> GET http://hashchuna.nn-assets.com/api/locations http/1.1
D/OkHttp: Authorization: Bearer 7c0d53de006b6de931f7d8747b22442354cecef9
D/OkHttp: --> END GET
D/OkHttp: <-- 401 Unauthorized http://hashchuna.nn-assets.com/api/locations (773ms)
D/OkHttp: Date: Mon, 20 Feb 2017 10:44:11 GMT
D/OkHttp: Server: Apache
D/OkHttp: X-Powered-By: PHP/7.0.15
D/OkHttp: Access-Control-Allow-Origin: *
D/OkHttp: Access-Control-Allow-Credentials: true
D/OkHttp: Access-Control-Max-Age: 1000
D/OkHttp: Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding
D/OkHttp: Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT
D/OkHttp: Expires: Thu, 19 Nov 1981 08:52:00 GMT
D/OkHttp: Cache-Control: no-store, no-cache, must-revalidate
D/OkHttp: Pragma: no-cache
D/OkHttp: Set-Cookie: PHPSESSID=u477o8g0q387t92hms4nhc14n1; path=/
D/OkHttp: Vary: Authorization
D/OkHttp: X-Powered-By: PleskLin
D/OkHttp: Keep-Alive: timeout=5
D/OkHttp: Connection: Keep-Alive
D/OkHttp: Transfer-Encoding: chunked
D/OkHttp: Content-Type: application/json;charset=utf-8
D/OkHttp: <-- END HTTP
КОД
Intercept
Request request = chain
.request()
.newBuilder()
//.header("Authorization","Bearer "+ SharedPrefsUtils.getSPinstance().getAccessToken(context))
.addHeader("Authorization","Bearer 1ed6b7c1839e02bbf7a1b4a8dbca84d23127c68e")
//.addHeader("cache-control", "no-cache")
//.cacheControl(CacheControl.FORCE_NETWORK)
.build();
дооснащения Instance
private Api getApiInstance(Context context) {
HttpLoggingInterceptor logInter = new HttpLoggingInterceptor();
logInter.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient mIntercepter = new OkHttpClient.Builder()
.addInterceptor(new RequestResponseInterseptor(context))
.addInterceptor(logInter)
.build();
Retrofit retrofitInstance = new Retrofit.Builder()
//.addConverterFactory(new NullOnEmptyConverterFactory())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_URL)
.client(mIntercepter)
.build();
return retrofitInstance.create(Api.class);
}
Вы АБСОЛЮТНО уверены, что добавляете обновленный токен в свои заголовки? Похоже, вы просто используете старый токен. – C0D3LIC1OU5
@ C0D3LIC1OU5 Да, я знаю, что проблема звучит так, как ошибка OBVIOUS, но ее нет, я даже жестко запрограммирован, как только я сгенерировал новый токен, если не произойдет некоторое кэширование с помощью модификации, о котором я не знаю – Ujju
Еще одна вещь, проверьте, что КЛЮЧИ, добавляемые в заголовок, соответствуют тому, что ожидает сервер, и у них нет опечаток. Как и ключ «Авторизация» для значения токена (или того, что вы их вызываете) – C0D3LIC1OU5