Android WebView Authorization认证 (解决不认证报401的问题)

1.通过账号密码生成base64(http://www.bejson.com/enc/base64/)

账号admin密码admin

原数据:admin:admmin

base64:YWRtaW46YWRtaW4=

2.通过OKHTTP访问请求认证

 //第一个参数为用户名,第二个参数为密码
        final String basic = "Basic YWRtaW46YWRtaW4=";//admin:admin==YWRtaW46YWRtaW4=;

        OkHttpClient client = new OkHttpClient.Builder().authenticator(new okhttp3.Authenticator() {
            @Nullable
            @Override
            public Request authenticate(@Nullable Route route, @NotNull Response response) throws IOException {
                return response.request().newBuilder().header("Authorization", basic).build();
            }
        }).build();

        Request request = new Request.Builder().url("http://http://127.0.0.1").build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d("Authorization", "onFailure: "+e.getMessage());
                Toast.makeText(getApplicationContext(),"数据异常,请重新加载!",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()) {
                    Log.d("Authorization", "onResponse: "+response.body().string());
                    handler.sendEmptyMessage(100);
                }
            }
        });

3.在handler中调用webview

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 100:
                    showWeb();
                    break;
            }
        }
    };


  public void showWeb(){
        WebView webView = findViewById(R.id.web1);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("http://127.0.0.1");

        WebSettings mWebSettings = webView.getSettings();
        //启用JavaScript。
        mWebSettings.setJavaScriptEnabled(true);
        mWebSettings.setUseWideViewPort(true);
        mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    }

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(webview,Authorization,Android)