隨着WebView android proxy配置,基本方案先發制人的代理認證,
從Android 2.2的開始,附標題可以進行身份驗證設置。下面可以添加標題爲webView
的http請求:
public void loadUrl(WebView view, String url, String proxyUserName, String proxyPassword){
try{
Class networkClass = Class.forName("android.webkit.Network");
if (networkClass != null) {
Object networkObj = invokeMethod(networkClass, "getInstance", new Object[]{view.getContext()}, Context.class);
if (networkObj != null) {
Field mProxyUserName = obj.getClass().getDeclaredField("mProxyUserName");
mProxyUserName.setAccessible(true);mProxyUserName.set(networkObj, proxyUserName);
Field mProxyPassword = obj.getClass().getDeclaredField("mProxyPassword");
mProxyPassword.setAccessible(true);mProxyPassword.set(networkObj, proxyPassword);
}
}
}catch(Exception e){
e.printStackTrace();
}
view.loadUrl(url);
}
當加載:
對於舊版本,搶佔代理認證可以在mProxyUserName
和mProxyPassword
在android.webkit.Network
通過反射設置一個新的url,都需要再次調用loadUrl()
。這非常重要。 因此,定製WebViewClient
應當用於覆蓋shouldOverrideUrlLoading(WebView view, String url)
class ProxyAuthWebViewClient extends WebViewClient {
String proxyUserName;
String proxyPassword;
public ProxyAuthWebViewClient(String proxyUserName, String proxyPassword){
this.proxyUserName = proxyUserName;
this.proxyPassword = proxyPassword;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
loadUrl(view, url, proxyUserName, proxyPassword);
return true ;
}
}
,並設置WebViewClient上的網頁視圖:
webView.setWebViewClient(new ProxyAuthWebViewClient("user", "password"));
謝謝!這個問題後來被問到,解決方案的需求已經得到解決,但很好解決。 – Stoive