我开发了一个 Android 应用程序,它运行流畅。尚未投入生产。此应用程序使用 REST 服务与服务器通信。现在到了一个问题。截至目前,我正在使用 HTTP 与服务器通信并从服务器获取信息。
我希望数据传输更安全。任何人都可以请阐明如何做到这一点?我对 HTTPS 和在 Android 中实现它一无所知。
任何指针和链接都会对如何开始有所帮助。我需要购买证书并签名吗?
谢谢
我相当肯定你不需要为 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;
}