Android和HTTPS通话

时间:2013-11-06 00:47:06

标签: android https

我开发了一款Android应用,运行顺畅。尚未投入生产。此应用程序使用REST服务与服务器通信。现在 到了一个问题。截至目前,我正在使用HTTP与服务器通信并从服务器获取信息。

我希望数据传输更安全。有谁能请说明如何实现这一目标?我对HTTPS无能为力并在Android中实现它。

任何指针和链接都会有所帮助,比如如何开始。我是否需要购买证书并签名。

由于

1 个答案:

答案 0 :(得分:1)

我相当确定您不需要在Android中对HTTPS执行任何特殊操作,只需将您的网址更改为以“https”开头即可。 new URL(url).openConnection()应该可以正常使用。如果您正在使用Apache的HttpClient内容,则可能需要定义自己的客户端。下面是我正在处理的项目中的代码。

public static DefaultHttpClient makeHTTPClient() {
    BasicHttpParams mHttpParams = new BasicHttpParams();

    // Set the timeout in milliseconds until a connection is established.
    // The default value is zero, that means the timeout is not used.
    int timeoutConnection = 15000;
    HttpConnectionParams.setConnectionTimeout(mHttpParams, timeoutConnection);
    // Set the default socket timeout (SO_TIMEOUT)
    // in milliseconds which is the timeout for waiting for data.
    int timeoutSocket = 20000;
    HttpConnectionParams.setSoTimeout(mHttpParams, timeoutSocket);

    SchemeRegistry registry = new SchemeRegistry();
    registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
    final SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory();
    sslSocketFactory.setHostnameVerifier(SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
    registry.register(new Scheme("https", sslSocketFactory, 443));

    ClientConnectionManager cm = new ThreadSafeClientConnManager(mHttpParams, registry);
    DefaultHttpClient defaultHttpClient = new DefaultHttpClient(cm, mHttpParams);

    return defaultHttpClient;
}