0

当我在桌面应用程序中应用该代码时:

 WebClient webClient = new WebClient();
 WebRequest wreq = new WebRequest( new URL (url), com.gargoylesoftware.htmlunit.HttpMethod.GET);
 HtmlPage p = (HtmlPage) webClient.getPage( wreq);

它工作正常,我得到一个答案:

[Raw read]: length = 5
0000: 16 03 03 00 5D                                     ....]
[Raw read]: length = 93

(然后继续握手)

但是,当我尝试在 tomcat 的 Web 应用程序中使用完全相同的代码时,它会显示该错误:

[Raw read]: length = 5
0000: 15 03 03 00 02                                     .....
[Raw read]: length = 2
0000: 02 50                                              .P
tt_20170131_142449, READ: TLSv1.2 Alert, length = 2
tt_20170131_142449, RECV TLSv1.2 ALERT:  fatal, internal_error
tt_20170131_142449, called closeSocket()
tt_20170131_142449, handling exception: javax.net.ssl.SSLException: Received fatal alert: internal_error

TLS 版本相同。我尝试了一些通常在这种情况下建议的东西,比如 webClient.getOptions().setUseInsecureSSL(false) 等等,但是,正如我所说,这看起来不像是协议问题,因为完全相同的代码在运行时可以完美运行没有tomcat。那么我应该去哪里寻找解决方案呢?

还有不同长度的 MD5 和 SHA1 哈希:

[写入] MD5 和 SHA1 哈希:len = 161 <--- 导致异常

[写入] MD5 和 SHA1 哈希:len = 213 <--- 工作正常

4

1 回答 1

0

通过将 httpclient-4.3.1.jar 替换为 4.3.3 版本解决。

于 2017-02-01T18:48:02.350 回答