最近在做一个通过 HttpClient 访问支付宝接口的东东,由于支付宝那边提供的是 https 的协议,所以在实现的过程中碰到了 N 多问题,现在拿出其中几个和大家一起分享。
再这之前还碰到一个 JUnit 环境配置的问题,稍后会写一份文档和大家一起分享。
下面正式开始进入作孽一样的调试过程,苦哉苦哉 …… 如果取经九九八十一难一样
第一难: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
Baidu,google 先,网上有很多资料不过按照上面的步骤还是解决不了我的问题,不过这些资料对我以后的理解还是有很大帮助的,至少让我知道 HttpClient ( https )是无法自动获得证书的 ,整整搞了快 1 天还是搞不定。由于我机器同时装了 Jdk1.4 和 Jdk1.5 这个版本, Eclipse 是用 Jdk1.5 的,所以我索性将 Jdk1.4 和 Jdk1.5 一股脑儿统统删除,重新装 Jdk1.5 和重新配置 Eclipse 环境,这下再运行,哈哈!!!上面的 Exception 不见了,有出现了其它一个错误,下面来看第二难(莫明奇妙,还需要继续找资料为啥会好的)。
第二难: sun.security.validator.ValidatorException : PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException : unable to find valid certification path to requested target
郁闷,这个问题网络上还找不到很类似的情况,不过当时想肯定和 CA 证书是有关系的,最后发现这个结论还是有用的 ,进入解决 第二难的步骤:
1. 访问 https://www.aplipay3.net
2. IE 自动弹出安全警报界面,点击“查看证书”
3. 在证书界面,点击“详细信息”,“复制到文件”
4. 在证书导出向导界面,点击“ DER 编码二进制 X.509”
5. 导出文件为 alipay.cer
6. 将 alipay.cer 拷贝到 D:\Program Files\Java\jre1.5.0\lib\security ,而不是 D:\Program Files\Java\jdk1.5.0\jre\lib\security (这个可能和 Eclipse 的环境设置也有关系)
7. 然后用 KeyTool 工具将 alipay.cer 导入 D:\Program Files\Java\jre1.5.0\lib\security\ 目录下的 cacert 文件 ( 注意而不是 D:\Program Files\Java\jdk1.5.0\jre\lib\security 目录下的 , 这个可能和 Eclipse 的环境有关 )
8. 再一次执行程序,哈哈哈哈哈哈,搞定,终于得到了支付宝返回给我的可爱的 XML 数据流
由于以前对 Java 安全方面没有怎么接触过,还需对这方面继续补补课,嘿嘿: - )
分享到:
相关推荐
基于jmeter+Java+HttpclientUtil实现的接口测试工具,通过Excel表格进行维护接口相关参数信息,借助Jmeter工具通过java请求设计接口测试自动化测试用例。代码重写了JavaSampleClient类,在使用过程中取出了冗余的...
Eclipse自动生成接口和JUnit测试类 Eclipse自动生成接口和JUnit测试类 Eclipse自动生成接口和JUnit测试类
测试httpclient,主要测试json参数的接口,包括get请求和post请求。
资源对应https://onefire.blog.csdn.net/article/details/120736588博客,这个是一个完整的基于SpringBoot架构的Java项目,使用idea或者eclipse打开就可以使用。对零基础或小白,以及测试工程师,有很大的参考价值。
Junit,测试Junit,测试案例使用
通过单元测试工具(Junit)支持,使学生对单元测试中测试用例的设计原则,设计方法进行了解和掌握。
junit基本介绍,junit常用的接口和类,如何编写测试代码,需要注意的几个问题
junit测试 test txt file
junit测试测试junit测试测试junit测试测试junit测试测试
软件测试JUnit测试框架的使用实验1报告
单元测试之道(Java):使用JUnit进行单元测试。单元测试是提高代码质量的有效手段,但大部分开发人员由于种种原因都不乐意进行单元测试。
单元测试框架Junit—— JUnit3.8.1 以及使用JUnit测试的代码demo。
Eclipse自动生成接口和JUnit测试类
Junit通常用于那些有明确返回值的方法的测试,而无法对返回值是void类型的方法进行测试,因为Junit的assert断言方法只适用于预期值与实际值的比较,对于void类型的方法,我们无法从它的return语句获得具体的返回值。...
在Eclipse中使用JUnit4进行单元测试!
junit3 junit4 api,单元测试的利器
如何使用JUnit写测试 如何使用JUnit写测试
Junit 通常用于那些有明确返回值的方法的测试,而无法对返回值是void类型的方法进行测试,因为Junit的assert断言方法只适用于预期值与实际值的比 较,对于void类型的方法,我们无法从它的return语句获得具体的返回值...
软件测试报告Junit的单元测试,框架的使用情况,适合正在学习的同学!
JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。 2 单元测试概念 单元:在Java中,一个类就是一个单元 单元测试:程序猿编写的一小段代码,用来对某个类中的...