2013-07-18 7 views
6

Моя задача - загрузить веб-сайт в WebView через HTTPS с неподдерживаемым шейдером Android TLS. Прямо сейчас, как доказательство концепции, я реализовал клиент apache http, способный выполнять http-запросы к таким ресурсам.WebView с пользовательским HTTP-клиентом

Каков наилучший подход к тому, чтобы WebView использовал мою пользовательскую реализацию для выполнения всех сетевых запросов?

+0

Я начинаю думать, что это невозможно. Я нашел 'WebViewClient.shouldInterceptRequest()', с помощью которого я могу делать сетевые запросы для ресурсов страницы с моим собственным http-клиентом, но этот метод передает только запрошенный URL-адрес без соответствующей информации запроса (http-метод GET/POST/..., http-заголовки и т. Д.), поэтому он не может использоваться для реального «проксирования». – user882209

+1

Просто обратите внимание, что метод запроса и заголовки доступны с Android 5.0 в новой версии 'shouldInterceptRequest' с помощью [WebResourceRequest] (http://developer.android.com/reference/android/webkit/WebResourceRequest.html). – Stan

ответ

1

Собственно, принятый ответ неверен. Вы не получаете полную информацию; то, что отсутствует, являются органами запроса.

Таким образом, вы можете реализовать запросы GET или HEAD просто отлично, но запросы POST сложнее.

Я еще не видел хорошего решения. Один, с которым я столкнулся, использует JavaScript, вставленный в страницу, для сбора данных POST, передайте его на Java через привязку https://developer.android.com/guide/webapps/webview.html#BindingJavaScript, а затем выполняет запрос на Java.

К сожалению, WebView попытается выполнить тот же запрос , поэтому вам нужно добавить больше хакеров, чтобы заставить его работать.

Смежные вопросы