一.背景

很多小伙伴都会遇到公司的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代理扭转");            }        });    }}