生成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 一会儿讲一下不正常的 正常的步骤如下:

  1. 首先进入到%JAVA_HOME%/bin下
  2. 找到wsimport.exe
  3. 打开 cmd (这里一定要在wsimport.exe同级的目录下, 也就是jdk/bin下)
  4. 输入命令 就可以生成客户端代码啦

wsimport -keep -d E:/test -s E:/test2 -verbose https://**********:*****/csp/hsb/DHC.Published.*****.BS.ZZJServiceInfos.CLS?WSDL

​ 这里描述每个命令的意义吧:

此命令为,在 E 盘 test下生成.class文件。在test2文件夹下生成.java文件

  1. -keep:是否生成java源文件
  2. -d:指定.class文件的输出目录
  3. -s:指定.java文件的输出目录
  4. -p:定义生成类的包名,不定义的话有默认包名
  5. -verbose:在控制台显示输出信息
  6. -b:指定jaxws/jaxb绑定文件或额外的schemas
  7. -extension:使用扩展来支持SOAP1.2

–End____以上是正常的webservice接口,下面来讲一下不正常的webservice接口(仅对我来说,可能是我了解的比较少吧)

不正常的

什么是不正常的webservice呢?

这里我先讲一下运行上面的命令 如果遇到不平常的webservice就会报一个错误 如下
:
为什么是这个错误呢?最重要的原因是: 文档的根元素不是以wsdl:definitions开头的它解析不了

我的这个webservice是以开头的

下面我讲一下解决方法吧

  1. 我们可以去访问 这个wsdl地址,然后复制这个页面中的所有信息
  2. 我们可以随便创建一个xml文件,把这些信息放入到里面,然后保存
  3. 最后一步我们就可以 在这个目录下 进入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错误(错误信息可以看一下标题)

错误原因:

  1. ​SSL认证失败
  2. 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异常相关推荐

  1. 关于用SoapUI集成CXF生成WebService客户端,以及测试的流程和问题的解决

    项目环境 1.springBoot框架的web系统 2.jdk1.8 3.windows 10 集成 IDEA开发环境 4.SoapUI 5.4.0软件(直接去百度搜索下载) 5.apache-cxf ...

  2. cmd命令生成webservice_根据wsdl文件生成WebService客户端代码

    有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...

  3. eclipse生成webservice客户端代码以及通过客户端访问服务端

    最近工作中需要用到webservice调用其他服务,没接触过这个,研究了几天,做个记录 1.eclipse生成webservice客户端:打开eclipse, File >> New &g ...

  4. 根据wsdl文件生成WebService客户端代码

    有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...

  5. soupUI生成webservice客户端代码

    在Apache网站下载axis2软件包,同时本机安装soapUI工具.例如,当前我使用的axis2版本为axis2-1.4-bin.zip,soapUI版本为3.6. Apache Axis下载地址: ...

  6. soapUI生成WebService客户端代码

    目录[-] 功能介绍 前提条件 操作步骤 功能介绍 对于面向WebServie接口开发时,当我们已经获取到WSDL文件后,可以使用soapUI工具生成对应的客户端和服务端代码. 前提条件 已在Apac ...

  7. wsimport命令生成webservice客户端

    一.排除问题 1.今天接到一个任务,我做为客户端,调用服务端接口,通过生成wsdl文件的方式,所以用了wsimport命令,后台提示不支持soap编码 . 2.我看网上说,jdk1.7及以后就不在支持 ...

  8. 用MyEclipse自带工具生成WebService客户端代码

    本文章主要是介绍如何利用已经发布了的Webservice的wsdl来自动生成java的客户端代码.注意:本方法需要你采用的java版本是1.5或者以上的版本,采用MyEclipse来自动生成代码. w ...

  9. cmd命令生成webservice_使用wsimport命令生成webService客户端代码实例

    wsimport简介 在JDK的bin文件夹中,有一个wsimport.exe工具,可依据wsdl文件生成相应的类文件,将生存在本地这些类文件拷贝到需要使用的项目中,就可以像调用本地的类一样调用web ...

最新文章

  1. 转 使用DCloud+Framework7制作移动APP应用
  2. 用init-connect+binlog实现用户操作追踪【转】
  3. libxml2如何解析xml格式的字符串
  4. c读取txt文件内容并建立一个链表_C++链表实现学生信息管理系统
  5. javascript设计模式_JavaScript 设计模式 学习总结
  6. Windows 8(Windows Developer Preview)先体验
  7. windows php redis扩展安装,怎么在Windows下安装PHP的Redis扩展服务
  8. 网站 云服务器ecshop,ecs云服务器搭建ecshop
  9. GitLab之创建项目组及项目
  10. React Native ES6写法总结
  11. tcpdump输出内容分析
  12. PC端-移动端自适应屏幕
  13. 个人github地址 https://github.com/Gerry1218
  14. android中的所有activity间动画跳转
  15. 傻白入门芯片设计,盘点计算机体系结构顶会
  16. Apache2 Windows安装与HTTP Server Digest 认证
  17. Mysql Data types in summary.
  18. consul-esm介绍
  19. [渝粤教育] 江西财经大学 大学体育与健康生活 参考 资料
  20. YOLOv5/v7 更换骨干网络之 GhostNet

热门文章

  1. 这是你们要的临时接收短信的虚拟手机号
  2. 华师大 OJ 3040
  3. luogu p4995 跳跳
  4. 招投标中评标的方法是什么?
  5. 全球最顶级的管理模式全在这了
  6. Python安装Selenium
  7. 电脑开机总是自动修复
  8. Linux 时间、时区设置
  9. 小米一元流量magisk_小米手机官方REC装面具(magisk)教程
  10. 工科硕士毕业14年,谈谈我的经验教训