我遇到了这个HTTPS连接问题已经过了2天的问题很长一段时间,并且已经在线搜索了解决方案。我遇到过SSLSocketFactory并尝试使用它,但却发现我无法解决我的问题。我在加载HTTPS时没有遇到任何SSL错误,而是在没有负载的情况下获得白屏。
我想知道的是,我开始一个新的Android项目。只在 main.xml 中添加WebView
,然后执行loadURL(https website)
。其中返回了没有SSL错误的白屏。在我查看我尝试访问的HTTPS网站上显示的内容之前,我需要执行哪些步骤?是否需要使用第三方API?我可以下载JAR文件吗?
编辑:我没有收到任何SSL错误。我只看到这个:request time failed: java.net.SocketException: Address family not supported by protocol
。知道我是怎么做到的吗?
答案 0 :(得分:1)
覆盖WebViewClient实现的方法,
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); // Ignore SSL certificate errors
}
尝试以下代码,https为我工作,
package org.example.webviewdemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
public class WebViewDemo extends Activity {
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
private WebView webView;
private EditText urlField;
private Button goButton;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create reference to UI elements
webView = (WebView) findViewById(R.id.webview_compontent);
urlField = (EditText)findViewById(R.id.url);
goButton = (Button)findViewById(R.id.go_button);
// workaround so that the default browser doesn't take over
webView.setWebViewClient(new MyWebViewClient());
// Setup click listener
goButton.setOnClickListener( new OnClickListener() {
public void onClick(View view) {
openURL();
}
});
// Setup key listener
urlField.setOnKeyListener( new OnKeyListener() {
public boolean onKey(View view, int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_ENTER) {
openURL();
return true;
} else {
return false;
}
}
});
}
/** Opens the URL in a browser */
private void openURL() {
webView.loadUrl(urlField.getText().toString());
webView.requestFocus();
}
}
main.xml中
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/url"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:lines="1"
android:layout_weight="1.0" android:hint="http://"/>
<Button
android:id="@+id/go_button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/go_button"
/>
</LinearLayout>
<WebView
android:id="@+id/webview_compontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0"
/>