成功连接到HTTPS网站的步骤是什么?

时间:2012-02-28 04:50:02

标签: android https android-2.3-gingerbread

我遇到了这个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。知道我是怎么做到的吗?

1 个答案:

答案 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"   
/>