忽略的WebView SSL证书请求 [英] Ignore ssl certificate requests in webview
本文介绍了忽略的WebView SSL证书请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我做小的应用程序,它涉及 aspx页面中,我尝试打开它,把我的WebView我有空白屏幕。
我试着用Chrome浏览器打开它,它给我需要的证书
我的code是很简单的我想补充一些文件来解释是怎么回事
@燮pressLint(SetJavaScriptEnabled)
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_web);
束束= getIntent()getExtras()。
如果(捆绑!= NULL){
urlSite = bundle.getString(passed_url);
}
_toolbar =(工具栏)findViewById(R.id.toolbar);
setSupportActionBar(_toolbar);
getSupportActionBar()setDisplayHomeAsUpEnabled(真)。
_toolbar.setNavigationOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
onBack pressed();
}
});
web视图=(的WebView)findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings(); //启用JavaScript
webSettings.setJavaScriptEnabled(真);
webSettings.setDomStorageEnabled(真);
webSettings.setJavaScriptCanOpenWindowsAutomatically(真);
webSettings.setUseWideViewPort(真);
webSettings.setLoadWithOverviewMode(真);
webSettings.setPluginState(WebSettings.PluginState.ON_DEMAND);
webView.setWebChromeClient(新WebChromeClient());
webView.setWebViewClient(新WebViewClient(){
@覆盖
公共无效onPageFinished(的WebView视图,字符串URL){
super.onPageFinished(查看,网址);
新的parseURL()执行(新的String [] {urlSite});
} @覆盖
公共布尔shouldOverrideUrlLoading(的WebView视图,字符串URL){
view.loadUrl(URL);
返回true;
}
});
如果(urlSite!= NULL){
webView.clearCache(真);
webView.loadUrl(urlSite);
// webView.loadUrl(文件:///android_asset/af.html);
}
}
解决方案
在一些研究,我发现答案,只是超越控制 onReceivedSslError
方法,并把它传递
@覆盖
公共无效onReceivedSslError(的WebView视图,SslErrorHandler处理器,SslError错误){
handler.proceed(); //忽略SSL证书错误
}
I make small app which involve aspx pages , I try open it throw my webview I got blank screen .
I try open it with chrome browser it give me certificate needed
my code is very simple I add some documentation to explain what is going on
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
Bundle bundle = getIntent().getExtras();
if(bundle != null){
urlSite = bundle.getString("passed_url");
}
_toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(_toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
_toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
// enable javascript
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setPluginState(WebSettings.PluginState.ON_DEMAND);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
new ParseURl().execute(new String[]{urlSite});
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
if(urlSite != null){
webView.clearCache(true);
webView.loadUrl(urlSite);
// webView.loadUrl("file:///android_asset/af.html");
}
}
解决方案
After some researched I found answer , just overide onReceivedSslError
method and pass it
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); // Ignore SSL certificate errors
}
这篇关于忽略的WebView SSL证书请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文