JAVA怎样调用https类型的webservice
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA怎样调用https类型的webservice相关的知识,希望对你有一定的参考价值。
1.打开webService链接,右键属性—》证书—》详细信息—》复制到文件,保存cer格式的文件。2. 复制下面的cmd命令,执行keytool命令,生成keystore文件,例如
c:\\nciic.keystore
keytool -import -alias nciic -file c:\\jswszx.cer -keystore c:\\nciic.keystore
它会提示输入密码,随便输入,例如:123456,回车
4.他会提示是否信任这个认证,输入Y,回车,指定目录下就会生成nciic.keystore文件
它会提示输入密码,随便输入,例如:123456,回车
4.他会提示是否信任这个认证,输入Y,回车,指定目录下就会生成nciic.keystore文件
5.修改Java代码
在调用接口方法之前,添加如下代码:
System.setProperty("javax.NET.ssl.trustStore","c://nciic.keystore"); System.setProperty("java.protocol.handler.pkgs","com.sun.Net.ssl.internal.www.protocol");
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); 参考技术A 代码如下:
static HostnameVerifier hv = new HostnameVerifier()
public boolean verify(String urlHostName, SSLSession session)
System.out.println("Warning: URL Host: " + urlHostName + " vs. "
+ session.getPeerHost());
return true;
;
private static void trustAllHttpsCertificates() throws Exception
javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
javax.net.ssl.TrustManager tm = new miTM();
trustAllCerts[0] = tm;
javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext
.getInstance("SSL");
sc.init(null, trustAllCerts, null);
javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc
.getSocketFactory());
static class miTM implements javax.net.ssl.TrustManager,
javax.net.ssl.X509TrustManager
public java.security.cert.X509Certificate[] getAcceptedIssuers()
return null;
public boolean isServerTrusted(
java.security.cert.X509Certificate[] certs)
return true;
public boolean isClientTrusted(
java.security.cert.X509Certificate[] certs)
return true;
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException
return;
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException
return;
//忽略https证书 根据客户端环境酌情判断是否忽略
trustAllHttpsCertificates();
HttpsURLConnection.setDefaultHostnameVerifier(hv);
怎样让vs2013不进行强制类型转换
参考技术A 把编译器的错误等级提高一级,碰到任何隐式类型转换的地方就会报错(之前的错误等级是只报警告)。如果是类的构造函数用explicit修饰,调用该构造函数时就不会进行隐式类型转换。
其他地方你不想进行隐式类型转换,你就别在不该用某类型的地方用某类型。你严格匹配了自然没有类型转换。
以上是关于JAVA怎样调用https类型的webservice的主要内容,如果未能解决你的问题,请参考以下文章