2011-05-17 62 views
2

如果我使用以下代码,因为我想(例如)更改证书的验证方式。如何控制SSLContext范围

TRM =一些信任管理器

SSLContext sc = SSLContext.getInstance("SSL"); 
sc.init(null, new TrustManager[] { trm }, null); 
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 

那么这个设置的SSLContext为将来做出无论使用什么线程的所有HTTPS连接。什么是最简洁的方式来控制范围,以便我只将它设置为我想要的那些呼叫?

回答

8

您可以设置你想拥有使用这种信任存储的实际连接对象上的套接字工厂:

HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); 
urlConnection.setSSLSocketFactory(sc.getSocketFactory()); 

做那,而不是调用setDefaultSSLSocketFactory

+0

感谢听起来它应该工作,但你知道任何其他方式,不需要你获得HttpsURLConnection的实例吗? – 2011-05-17 15:31:50

+0

你没有使用HTTP?什么类型的连接使用SSL套接字? – laz 2011-05-17 16:08:54

+0

@che javara每次在Java中使用HTTPS URL时,都会得到一个HttpsURLConnection。这不是一个额外的步骤。你的问题没有意义。 – EJP 2011-05-18 01:12:23