#android #ssl
#Android #ssl
Вопрос:
r будет обмениваться файлами XML. На данный момент я использую обычные сокеты для доставки файлов из приложения в приложение, но мне нужно использовать SSL-соединение, поэтому я хочу использовать java SSLSockets. Моя проблема в том, что я действительно не знаю, как это сделать. Я много искал информацию в Интернете, но не нахожу ничего полезного. Кто-нибудь может привести мне какой-нибудь пример SSL-соединений Android-сервера? Спасибо за любую помощь.
Ответ №1:
Вы недостаточно искали: Справочное руководство по JSSE. Запуск сокетов в Android не является чем-то особенным, попробуйте. Следует отметить одну вещь: вы не можете использовать системные свойства, упомянутые в руководстве ( javax.net.ssl.trustStore
и т.д.), Вы должны настроить хранилища доверия / ключей из кода.
Ответ №2:
Вот быстрый и грязный.
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.SingleClientConnManager;
public class EasyHttpClient extends DefaultHttpClient {
/**
* Connection manager that uses our SSL certificate.
*/
@Override
protected ClientConnectionManager createClientConnectionManager() {
SchemeRegistry registry = new SchemeRegistry();
// Register for HTTP.
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
// SSL Socket.
SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory();
sslSocketFactory.setHostnameVerifier(SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
// Register for HTTPS.
registry.register(new Scheme("https", sslSocketFactory, 443));
return new SingleClientConnManager(getParams(), registry);
}
}