生成webservice客户端以及解决SSL异常
生成Webservice代码 并解决异常HTTP 传输错 误:javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLHandshakeException:SunCertPathBuilderException: unable to find valid certification path to requested target
HTTP 传输错误: javax.net.ssl.SSLHandshakeException: SunCertPathBuilderException: unable to find valid certification path to requested target
异常重要日志:
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: HTTP 传输错误: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetCaused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetCaused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetCaused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
最近在对接His的一个webService的接口,因为没搞过webService 所以刚开始就遇到了这个问题,真是出师未捷身先死~~~哈哈哈 这个是生成客户端代码的时候,掉人家的接口出现的错误
在网上找了很多的解决方案,然后发现都是在linux 下的jdk添加证书,因为 大多数的开发环境windows 所有 我就结合网上的方案,总结了一些准备方案
首先 先讲一下怎么得到客户端代码吧
*这里我根据根节点的不同 分为两种情况
正常的
生成客户端代码其实很简单,生成后调人家的接口就行啦,服务端代码的话,自己去找资料学习吧~~~~~
我是用 命令行(其实就是jdk自带的工具 )生成的代码, 同时也可以 用eclipse idea 各种IDE去生成客户端代码
我这里就主要讲一下用命令行生成代码 别的就不在赘述了,为什么只讲这个呢?? 因为用命令行 报错误能看到是什么错误,
如果用IDE的话 是看不到错误的只有一句话(这里我只用 eclipse 和 IDEA 试了下,都是报一句话 很头疼) 所有我就用命令行给大家讲一下吧
这里描述一下正常的 webservice 一会儿讲一下不正常的 正常的步骤如下:
- 首先进入到%JAVA_HOME%/bin下
- 找到wsimport.exe
- 打开 cmd (这里一定要在wsimport.exe同级的目录下, 也就是jdk/bin下)
- 输入命令 就可以生成客户端代码啦
wsimport -keep -d E:/test -s E:/test2 -verbose https://**********:*****/csp/hsb/DHC.Published.*****.BS.ZZJServiceInfos.CLS?WSDL
这里描述每个命令的意义吧:
此命令为,在 E 盘 test下生成.class文件。在test2文件夹下生成.java文件
- -keep:是否生成java源文件
- -d:指定.class文件的输出目录
- -s:指定.java文件的输出目录
- -p:定义生成类的包名,不定义的话有默认包名
- -verbose:在控制台显示输出信息
- -b:指定jaxws/jaxb绑定文件或额外的schemas
- -extension:使用扩展来支持SOAP1.2
–End____以上是正常的webservice接口,下面来讲一下不正常的webservice接口(仅对我来说,可能是我了解的比较少吧)
不正常的
什么是不正常的webservice呢?
这里我先讲一下运行上面的命令 如果遇到不平常的webservice就会报一个错误 如下
:
为什么是这个错误呢?最重要的原因是: 文档的根元素不是以wsdl:definitions开头的它解析不了
我的这个webservice是以开头的
下面我讲一下解决方法吧
- 我们可以去访问 这个wsdl地址,然后复制这个页面中的所有信息
- 我们可以随便创建一个xml文件,把这些信息放入到里面,然后保存
- 最后一步我们就可以 在这个目录下 进入cmd运行下面的命令
wsimport -s . hello.xml
运行成功后就生成了webservice的客户端代码结构如下:
(ps:这里每个的webservice的服务端写的不同,生成的webservice代码结构也就不同 仅供参考吧)
下面是调用人家的接口,发送报文,拿到响应 就可以根据自己的需求处理啦
ZZJServiceInfos zz = new ZZJServiceInfos();ZZJServiceInfosSoap infosSoap = zz.getZZJServiceInfosSoap(); String response = infosSoap.hipMessageService("MES0004", builder.toString().intern());
这里如果你想学习怎么写客户端代码和服务端代码 也可参考一下我的这个博客:
https://blog.csdn.net/qq_47109099/article/details/126031108?spm=1001.2014.3001.5502
-End
报的SSL错误(错误信息可以看一下标题)
错误原因:
- SSL认证失败
- Java在访问SSL加密的网站时,需要从JDK的KeyStore 里面去查找相对应得可信证书,如果不能从默认或者指定的KeyStore 中找到可信证书,就会报这个错误。
另外,Java所使用的证书仓库并不是Windows系统自带的证书管理。所以即使系统中包含此证书也不可以使用
解决方法:
- 将所访问站点的证书添加到 我们的JVM中
下面我就讲一下如何在windows下向我们的jdk添加证书吧,如果你的系统是linux的可以参考一下下面的文章
linux的向jdk中添加证书
https://blog.csdn.net/qq_37084673/article/details/108597947
**第一步:**先下载证书,访问webservice的地址,然后点击左上角的那个锁,
然后找到证书的选项并打开详细信息:
点击复制到文件,我们就可以向本地保存证书了实际是一个.cer文件
默认保存在这个路径:
C:\Program Files (x86)\Google\Chrome\Application\103.0.5060.134
**第二步:**然后我们就把这个文件放到我们%JAVA_HOME%/jre/lib/security下
**第三步:**就是运行保存证书到jvm的命令啦,在本目录下(%JAVA_HOME%/jre/lib/security)打开cmd窗口
keytool -import -trustcacerts -alias hello -file hello.cer -keystore cacerts -storepass changeit
这里的hello是名字,要确保现在没有同名的
cacerts 设置成可读写权限。
changeit是默认的密码
**第五步:**在cmd窗口就看到 这些确定信息: **是否信任此证书?**就直接 Y (这里就不截图了)
**第六步:**证书已添加到密钥库中,表示已经成功了
**最后:**我们就可以重新启动一下我们的项目了,就Okk了
在最后还有一个命令跟大家说一下就是查看我们的JVM中的所有证书
keytool -list -keystore D:\jdk1-8/jre/lib/security/cacerts
到这里我的文章就结束了,写作不易,浪费午休的时间写的这篇博客,如果真的帮助到你了,就点一个小心心吧_____
重新启动一下我们的项目了,就Okk了
在最后还有一个命令跟大家说一下就是查看我们的JVM中的所有证书
keytool -list -keystore D:\jdk1-8/jre/lib/security/cacerts
到这里我的文章就结束了,写作不易,浪费午休的时间写的这篇博客,如果真的帮助到你了,就点一个小心心吧_____
生成webservice客户端以及解决SSL异常相关推荐
- 关于用SoapUI集成CXF生成WebService客户端,以及测试的流程和问题的解决
项目环境 1.springBoot框架的web系统 2.jdk1.8 3.windows 10 集成 IDEA开发环境 4.SoapUI 5.4.0软件(直接去百度搜索下载) 5.apache-cxf ...
- cmd命令生成webservice_根据wsdl文件生成WebService客户端代码
有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...
- eclipse生成webservice客户端代码以及通过客户端访问服务端
最近工作中需要用到webservice调用其他服务,没接触过这个,研究了几天,做个记录 1.eclipse生成webservice客户端:打开eclipse, File >> New &g ...
- 根据wsdl文件生成WebService客户端代码
有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...
- soupUI生成webservice客户端代码
在Apache网站下载axis2软件包,同时本机安装soapUI工具.例如,当前我使用的axis2版本为axis2-1.4-bin.zip,soapUI版本为3.6. Apache Axis下载地址: ...
- soapUI生成WebService客户端代码
目录[-] 功能介绍 前提条件 操作步骤 功能介绍 对于面向WebServie接口开发时,当我们已经获取到WSDL文件后,可以使用soapUI工具生成对应的客户端和服务端代码. 前提条件 已在Apac ...
- wsimport命令生成webservice客户端
一.排除问题 1.今天接到一个任务,我做为客户端,调用服务端接口,通过生成wsdl文件的方式,所以用了wsimport命令,后台提示不支持soap编码 . 2.我看网上说,jdk1.7及以后就不在支持 ...
- 用MyEclipse自带工具生成WebService客户端代码
本文章主要是介绍如何利用已经发布了的Webservice的wsdl来自动生成java的客户端代码.注意:本方法需要你采用的java版本是1.5或者以上的版本,采用MyEclipse来自动生成代码. w ...
- cmd命令生成webservice_使用wsimport命令生成webService客户端代码实例
wsimport简介 在JDK的bin文件夹中,有一个wsimport.exe工具,可依据wsdl文件生成相应的类文件,将生存在本地这些类文件拷贝到需要使用的项目中,就可以像调用本地的类一样调用web ...
最新文章
- 转 使用DCloud+Framework7制作移动APP应用
- 用init-connect+binlog实现用户操作追踪【转】
- libxml2如何解析xml格式的字符串
- c读取txt文件内容并建立一个链表_C++链表实现学生信息管理系统
- javascript设计模式_JavaScript 设计模式 学习总结
- Windows 8(Windows Developer Preview)先体验
- windows php redis扩展安装,怎么在Windows下安装PHP的Redis扩展服务
- 网站 云服务器ecshop,ecs云服务器搭建ecshop
- GitLab之创建项目组及项目
- React Native ES6写法总结
- tcpdump输出内容分析
- PC端-移动端自适应屏幕
- 个人github地址 https://github.com/Gerry1218
- android中的所有activity间动画跳转
- 傻白入门芯片设计,盘点计算机体系结构顶会
- Apache2 Windows安装与HTTP Server Digest 认证
- Mysql Data types in summary.
- consul-esm介绍
- [渝粤教育] 江西财经大学 大学体育与健康生活 参考 资料
- YOLOv5/v7 更换骨干网络之 GhostNet