2013-07-18 7 views
6

Il mio compito è caricare il sito Web in WebView su HTTPS con un codice TLS Android vanigliato non supportato. In questo momento come prova del concetto ho implementato il client http Apache in grado di fare richieste http a tali risorse.WebView con client HTTP personalizzato

Qual è l'approccio migliore per rendere WebView utilizza la mia implementazione client personalizzata per eseguire tutte le richieste di rete?

+0

Sto iniziando a pensare che sia impossibile. Ho trovato 'WebViewClient.shouldInterceptRequest()' con il quale posso effettuare richieste di rete alle risorse di pagina con il mio client http, ma questo metodo passa solo l'URL richiesto senza informazioni relative alla richiesta (metodo http GET/POST/..., intestazioni http ecc.) quindi non può essere usato per veri "proxy". – user882209

+1

Solo una nota, che il metodo di richiesta e le intestazioni sono disponibili da Android 5.0 nella nuova versione di 'shouldInterceptRequest' per mezzo di [WebResourceRequest] (http://developer.android.com/reference/android/webkit/WebResourceRequest.html) parametro. – Stan

risposta

1

In realtà, la risposta accettata è errata. Non ottieni informazioni complete; ciò che manca sono i corpi delle richieste.

Quindi è possibile implementare le richieste GET o HEAD in modo corretto, ma le richieste POST sono più complicate.

Non ho ancora trovato una buona soluzione. Uno che ho incontrato utilizza JavaScript inserito nella pagina per raccogliere i dati POST, passarlo a Java tramite un binding https://developer.android.com/guide/webapps/webview.html#BindingJavaScript e quindi eseguire la richiesta in Java.

Sfortunatamente, WebView proverà a eseguire la stessa richiesta di nuovo, quindi è necessario aggiungere altro hackery per farlo funzionare.