В моем приложении для Android я подключаюсь к защищенному сайту, где мои учетные данные содержатся в пользовательских заголовках. Я могу войти в систему успешно, потому что пользовательские заголовки отправляются с новым запросом страницы. Основываясь на моей пользовательской информации заголовка, есть определенные функции страницы, которые включены для моего устройства. Проблема заключается в том, что при загрузке ресурсов с домашней страницы после входа в систему пользовательские заголовки, которые я указываю в webview.LoadUrl(); не отправляются. Поэтому конечный результат заключается в том, что я могу войти в систему, но не получать специальные функции, связанные с моим устройством.Пользовательские заголовки android webview не выходят на страничные запросы ресурсов
Я пробовал оба этих переопределения. shouldOverrideUrlLoading, похоже, работает при изменении URL-адреса, но shouldInterceptRequest, похоже, не вызывает вызовы ресурсов? Если это моя реализация не работает?
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
request.getRequestHeaders().putAll(getExtraHeaders());
return super.shouldInterceptRequest(view, request);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url, getExtraHeaders());
return false;
}
Привет, Большое спасибо за ответ. – FranticCity
На самом деле моя реализация shouldOverrideUrlLoading() работает нормально. Он вызывается при каждом новом запросе страницы и добавляются заголовки. Проблема возникает после начальной загрузки, когда веб-просмотр начинает запрашивать ресурсы страницы. В каждом запросе ресурса отсутствуют дополнительные заголовки. Вот пример. Если я загружу тестовую страницу заголовка «http://www.procato.com/my+headers/» в своем веб-представлении, как только загружается страница, я вижу все правильные заголовки. Через 2 секунды, когда страница загружает изображения с правой стороны, дополнительные заголовки не находятся в запросе. – FranticCity
Я обновил свой ответ, чтобы включить возможное предложение. Изображения проходят через 'shouldInterceptRequest()', поэтому вы можете обрабатывать запрос там сами с помощью 'URLConnection'. Я написал код, чтобы дать вам представление, но я его не тестировал. Надеюсь, это даст вам вдохновение для последней части головоломки. –