Android(安卓)WebView Authorization认证 (解决不认证报401的问题)
16lz
2021-01-26
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); }
更多相关文章
- Android(安卓)-- android activity 各种布局方式以及相关参数
- OkHttp的初步使用(get、post之{RequestBody、FormBody、Multipar
- Android(安卓)开发中uboot传给Kernel 的androidboot.xxx命令行参
- Android(安卓)解决静态广播收不到的问题
- android 2.2 视频和图片的缩略图处理
- Android中Message传递参数【安卓进化十六】
- Android(安卓)http get/post传递参数
- Android开发之Toast全接触
- Android开发之自定义相机设定照片和预览参数问题