admin管理员组

文章数量:1516870

/**
* 所有主机默认通过
*/
private static HostnameVerifier hnv = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true ;
}
};
/**
* 关键在这信任所有证书
*/
private static TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null ;
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
return ;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
return ;
}
}
// X509TrustManager
}; // TrustManager[]

String keyf
= " F://test.pfx " ;

String pass
= " 12345678 " ;
// set up a connection
SSLSocketFactory ssf = null ;

PrintWriter out
= null ;
BufferedReader in
= null ;
String result
= "" ;
try
{
// init context
SSLContext ctx = SSLContext.getInstance( " TLS " );
KeyManagerFactory kmf
= KeyManagerFactory.getInstance( " SunX509 " );
TrustManagerFactory tmf
= TrustManagerFactory.getInstance( " SunX509 " );
KeyStore ks
= KeyStore.getInstance( " PKCS12 " );

// load keystore

/*

*如果这里失败,请确认在jre/lib/sercurity中jce的两个包local_policy.jar和US_export_policy.jar是jce6,在java.sun.com中j2se的

additional downloads可以下载到,然后在项目是用bcprov-jdk16-144.jar。

*/


ks.load( new FileInputStream(keyf),pass.toCharArray());

kmf.init(ks,pass.toCharArray());

ctx.init(kmf.getKeyManagers(),trustAllCerts,
null );

System.out.println(
" load keystore success. " );
ssf
= ctx.getSocketFactory();

HttpsURLConnection.setDefaultSSLSocketFactory(ssf);

HttpsURLConnection.setDefaultHostnameVerifier(hnv);

URL realUrl
= new URL(url);

// 打开和URL之间的连接
HttpsURLConnection conn = (HttpsURLConnection) realUrl.openConnection();

// 设置通用的请求属性
conn.setRequestProperty( " accept " , " */* " );
conn.setRequestProperty(
" connection " , " Keep-Alive " );
conn.setRequestProperty(
" user-agent " , " Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) " );

// 发送POST请求必须设置如下两行
conn.setDoOutput( true );
conn.setDoInput(
true );
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null )
{
result
+= " /n " + line;
}
}
catch (Exception e)
{
System.out.println(
" 发送POST请求出现异常! " + e);
e.printStackTrace();
}
// 使用finally块来关闭输出流、输入流
finally
{
try
{
if (out != null )
{
out.close();
}
if (in != null )
{
in.close();
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}

本文标签: 深度解读系统编程