-2

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

我希望数据传输更安全。任何人都可以请阐明如何做到这一点?我对 HTTPS 和在 Android 中实现它一无所知。

任何指针和链接都会对如何开始有所帮助。我需要购买证书并签名吗?

谢谢

4

1 回答 1

1

我相当肯定你不需要为 Android 中的 HTTPS 做任何特别的事情,只需将你的 url 更改为以“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;
}
于 2013-11-06T00:57:13.957 回答