/**
* 所有主机默认通过
*/
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();
}
}


发布评论