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的主要内容,如果未能解决你的问题,请参考以下文章

JAVA怎样调用https类型的webservice

JAVA怎样调用https类型的webservice

C#调用Webserver自定义类型方法的接口

怎样用java调用https接口

如何在调用webserver的时候直接返回一个json的数据

用java编写实现从键盘输入一个字符串,判断其是不是为浮点数?