一.背景
很多小伙伴都会遇到公司的app需要通过外网访问公司的内网服务,这个时候后台同学就会配置一个代理服务器,app通过代理服务器访问公司内网。出于安全的考虑,还会对访问代理服务器的请求进行身份验证。
那么Android的WebView如何设置代理,之前查了下网上的资料,大多是通过反射进行设置,但是Google官方已经提供了方便的API供我们使用了。所以,下面就简单介绍下WebView的代理的设置。
二.具体步骤
Android WebView设置代理需要使用ProxyConfig相关类,身份验证需要在WebViewClient的onReceivedHttpAuthRequest里进行。
首先,我们在项目的build.gradle添加相关依赖。
implementation 'androidx.webkit:webkit:1.3.0'
设置代理具体代码如下:
private void init() {
wv = findViewById(R.id.wv);
WebSettings webSettings = wv.getSettings();
webSettings.setSupportZoom(true);
webSettings.setJavaScriptEnabled(true);
wv.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm){
//身份验证(账号密码)
handler.proceed("userName", "password");
}
});
setProxy();
wv.loadUrl("http://www.uc123.com");
}
private void setProxy() {
if (WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE)) {
ProxyConfig proxyConfig = new ProxyConfig.Builder()
.addProxyRule("111.123.321.121:1234")
.addDirect().build();
ProxyController.getInstance().setProxyOverride(proxyConfig, new Executor() {
@Override
public void execute(Runnable command) {
//do nothing
}
}, new Runnable() {
@Override
public void run() {
Log.w(TAG, "WebView代理改变");
}
});
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。