`

使用JUnit测试通过 HttpClient(https协议)访问支付宝接口时不能自动获得证书的解决办法

    博客分类:
  • java
阅读更多

最近在做一个通过 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 安全方面没有怎么接触过,还需对这方面继续补补课,嘿嘿: - )

分享到:
评论
1 楼 lippeng 2014-11-04  
楼主,你好!

这篇中提到的一个话题,是我现在非常关心的,我自己还没搞明白,想向您请教!

至少让我知道 HttpClient  ( https )是无法自动获得证书的


我最近几天一直在想办法通过httpClient先获得证书,再建立SSL/TLS连接,却一直没找到办法!

看到您这句话,看上去是在说:这是做不到的!能告诉我原因是什么吗?

我觉得浏览器能做到,我用HttpClient应该也能做到,只是会麻烦一点。。。所以,这么长时间以来,一直在尝试。。。

非常期待您的回答,谢谢

相关推荐

    基于jmeter+Java+HttpclientUtil实现的接口测试工具

    基于jmeter+Java+HttpclientUtil实现的接口测试工具,通过Excel表格进行维护接口相关参数信息,借助Jmeter工具通过java请求设计接口测试自动化测试用例。代码重写了JavaSampleClient类,在使用过程中取出了冗余的...

    全栈自动化测试实战 基于testng,httpclient,selenium.appium

    本书以testng、httpclient和selenium.appium为技术核心,详细介绍了如何进行端到端的自动化测试。下面将分别阐述这些工具在自动化测试中的作用及其相关知识点。 TestNG是一款强大的测试框架,它继承了JUnit的优点并...

    Junit测试案例使用

    4. Junit 在 Java 开发中的应用:Java 下的 team 开发,采用 cvs(版本控制) + ant(项目管理) + junit(集成测试) 的模式时,通过对 ant 的配置,可以很简单地实现测试自动化。 5. Junit 测试的分类:Junit 有不同的...

    自动饮料机Junit测试(软件测试与质量保证实验).rar

    通过这样的实验,学生将学习如何创建测试类,定义测试方法,使用Junit的断言来验证结果,并理解测试驱动开发(TDD)的理念,即先写测试再写实现。 总之,"自动饮料机Junit测试"实验是实践软件测试理念和技巧的有效...

    JAVA接口自动化测试MyBatis+MySQL实现用例管理

    在Java开发过程中,接口自动化测试是一项至关重要的任务,它能够有效地确保代码质量,减少手动测试的工作量,并在软件迭代过程中快速验证功能的正确性。MyBatis作为一个轻量级的持久层框架,与MySQL数据库结合,可以...

    Eclipse自动生成接口和JUnit测试类

    Eclipse自动生成接口和JUnit测试类 Eclipse自动生成接口和JUnit测试类 Eclipse自动生成接口和JUnit测试类

    实验5 JUnit测试框架的使用.doc

    2. 测试方法必须使用 public void 修饰,而且不能带有任何参数。 六、查看运行结果 在测试类上点击右键,在弹出菜单中选择 Run As JUnit Test。运行结果将显示在测试结果窗口中,绿色的进度条提示我们,测试运行...

    spring测试HTTPclient来的类

    测试httpclient,主要测试json参数的接口,包括get请求和post请求。

    httpClient 调用远程接口 获取数据到本地文件夹

    在这个场景中,我们使用HttpClient来调用远程接口,从电信公司的网站获取可用的新手机号码信息,并将这些数据存储到本地文件中。以下是对这个过程的详细解释: 1. **HttpClient的基本使用**: HttpClient提供了一...

    在Eclipse中使用JUnit4进行单元测试

    在Eclipse中使用JUnit4进行单元测试是一种常见的Java开发实践,它可以帮助开发者确保代码的正确性和稳定性。单元测试是软件开发中的重要环节,通过编写针对代码各个独立模块的测试用例,可以验证代码功能是否按预期...

    eclipse下利用ant、junit进行自动化测试例子源码

    通过研究和实践这个例子,开发者不仅可以掌握ANT和JUnit的基本用法,还能了解如何在Eclipse中整合这两个工具,实现高效、自动化的测试流程。这对于提升个人或团队的软件开发质量和效率都具有重要意义。

    Java编程使用Junit实现接口单元测试,快速实现接口全覆盖(建议收藏)

    资源对应https://onefire.blog.csdn.net/article/details/120736588博客,这个是一个完整的基于SpringBoot架构的Java项目,使用idea或者eclipse打开就可以使用。对零基础或小白,以及测试工程师,有很大的参考价值。

    JUnit3.8.1 以及使用JUnit测试的代码demo

    在实际应用中,开发者通常会使用构建工具(如Maven或Gradle)配合JUnit进行自动化测试,这使得测试能够集成到开发流程中,并且可以在每次代码修改后自动运行。JUnit的结果可以通过测试报告展示,帮助开发者快速定位...

    junit测试private函数

    反射允许我们在运行时检查类、接口、字段和方法的信息,并能动态地调用方法或访问字段。在Java中,`java.lang.reflect`包提供了反射的相关类和接口。通过`Class`对象,我们可以获取到类的所有信息,包括私有成员。 ...

    单元测试之道Java版——使用Junit

    6. **运行测试**:使用IDE(如Eclipse、IntelliJ IDEA)内置的Junit支持,或者通过命令行运行Junit测试套件。 7. **查看测试结果**:测试失败时,Junit会显示失败的测试用例及具体的失败信息,帮助我们定位问题。 ...

    junit + ant 自动化测试

    总的来说,`JUnit`和`Ant`的结合使用为企业级的Java开发提供了一套强大的自动化测试解决方案,它使得测试过程更加规范、高效,有助于打造高质量的软件产品。通过不断优化和扩展这个demo,你可以更好地理解和掌握这两...

Global site tag (gtag.js) - Google Analytics