【发布时间】:2011-08-26 14:08:42
【问题描述】:
这是我能做到的最基础的——RAD 中的全新设置、全新项目、所有默认设置和此代码:
try {
String url = "https://www.verisign.com";
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(url);
client.executeMethod(post);
String response2 = post.getResponseBodyAsString();
} catch (Exception e) {
e.printStackTrace();
}
这是我得到的错误(不是很丰富的恕我直言)
java.net.SocketException
at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:5)
at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:93)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:651)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:628)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:497)
关于我可以尝试获得更具描述性的错误的任何想法?
更新
当我查看“runtimes\base_v61\profiles\AppSrv01\logs\ffdc”时,我发现此错误被打印到日志中:
com.ibm.websphere.ssl.SSLException: java.io.IOException: DerInputStream.getLength(): lengthTag=127, too big.
at com.ibm.websphere.ssl.JSSEHelper.getSSLSocketFactory(JSSEHelper.java:583)
at com.ibm.websphere.ssl.protocol.SSLSocketFactory.<init>(SSLSocketFactory.java:87)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1243)
at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:9)
at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:93)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:651)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:628)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:497)
更新 - 有了答案 已修复,这是一个有趣的问题,这是您解决它的方法(如果您遇到过)
第 1 步:在 \SDP70\jdk\jre\bin 中启动 ikeyman.exe
第 2 步:在 SDP70\runtimes\base_v61\java\jre\lib\security 中打开您的 certs 文件(例如,我的是 cacerts)
第 3 步:输入您的密码(您还记得您的密码吗)?
第 4 步:如果数据库类型不是 PKS12 继续
第 5 步:将您的证书文件另存为 pks12
第 6 步:停止 Websphere
第 7 步:将旧证书文件重命名为“cacerts.bak”之类的名称,将新的 PKS12 证书文件重命名为默认文件
第 8 步:重启 websphere,得到合法错误
第 9 步:利润
【问题讨论】: