当我在桌面应用程序中应用该代码时:
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 <--- 工作正常