Java Android WebView-具有经过身份验证的代理
我目前正在调试一个围绕WebView构建的Android应用程序。我负责处理的开发网络环境(不是我的选择,这是一个“enterprisey”安全决策)是WPA WiFi+代理服务器+代理身份验证 虽然a上的说明非常好,但我正试图找到一种方法来配置代理主机:端口和用户名:密码 我的限制是:Java Android WebView-具有经过身份验证的代理,java,android,proxy,android-webview,Java,Android,Proxy,Android Webview,我目前正在调试一个围绕WebView构建的Android应用程序。我负责处理的开发网络环境(不是我的选择,这是一个“enterprisey”安全决策)是WPA WiFi+代理服务器+代理身份验证 虽然a上的说明非常好,但我正试图找到一种方法来配置代理主机:端口和用户名:密码 我的限制是: 手机没有根-试图复制客户报告的错误,宁愿不偏离典型的客户设置 在Froyo上运行三星Galaxy S 以2.1为基础构建 安卓应用程序不是我通常使用的东西,同样也不是我的选择,所以如果我公然遗漏了细节,那就
- 手机没有根-试图复制客户报告的错误,宁愿不偏离典型的客户设置
- 在Froyo上运行三星Galaxy S
- 以2.1为基础构建
webView
的http请求添加标题:
public void loadUrl(WebView view, String url, String proxyUserName, String proxyPassword){
UsernamePasswordCredentials creds= new UsernamePasswordCredentials(proxyUserName, proxyPassword);
Header credHeader = BasicScheme.authenticate(creds, "UTF-8", true);
Map<String, String> header = new HashMap<String, String>();
header.put(credHeader.getName(), credHeader.getValue());
view.loadUrl(url, header);
}
加载新url时,必须再次调用loadUrl()
。这是非常重要的。
因此,应该使用自定义的WebViewClient
来覆盖shouldOverrideUrlLoading(WebView视图,字符串url)
并在webView上设置WebViewClient:
webView.setWebViewClient(new ProxyAuthWebViewClient("user", "password"));
嗨,这个解决方案适用于android 4.1吗?还有别的选择吗?谢谢,@toufik_at,基于android版本,使用代理可能会有所不同。但是我确信在安卓2.2之后添加一个标题总是有效的。设置
WebViewClient
是最好的实用答案!
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 ;
}
}
webView.setWebViewClient(new ProxyAuthWebViewClient("user", "password"));