我开发了一款Android应用,运行顺畅。尚未投入生产。此应用程序使用REST服务与服务器通信。现在 到了一个问题。截至目前,我正在使用HTTP与服务器通信并从服务器获取信息。
我希望数据传输更安全。有谁能请说明如何实现这一目标?我对HTTPS无能为力并在Android中实现它。
任何指针和链接都会有所帮助,比如如何开始。我是否需要购买证书并签名。
由于
答案 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;
}