求解protocol的错误

zero959 2015-05-28 11:49:43
/*
* Created on 2006-2-19
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.icbc.SSL;

/**
* @author xiezhichao
*
* this class is used to send and receive message through SSL
*/
import java.net.URL;
import java.net.URLEncoder;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.protocol.Protocol;

public class SSLSendAndRec {

/**
*
*/
public SSLSendAndRec() {
super();
}

public static void main(String[] args) throws Exception{
Protocol authhttps = new Protocol("https",
//AuthSSLProtocolSocketFactory参数含义:证书库,证书库,本地端口(建立https连接时使用的本地端口,需要空闲端口)

new AuthSSLProtocolSocketFactory(

new URL("file:///F:/t1.jks"), "password",

new URL("file:///F:/t1.jks"), "password"), 8445);
System.out.println(authhttps.toString());

HttpClient client = new HttpClient();
System.out.println("建立了httpclient");
//对方ip或域名,端口(一般是443),protocol对象
//client.getHostConfiguration().setHost("corporbank.icbc.com.cn", 443, authhttps);
//System.out.println("建立了gethostconfiguration");
//client.getHostConfiguration().setHost("83.252.30.98",8890);
/*只能使用相对路径*/

PostMethod httpget = new PostMethod("https://corporbank3.dccnet.com.cn/servlet/ICBCINBSEBusinessServlet");
System.out.println(httpget.getAuthenticationRealm());
httpget.setParameter("APIName","EAPI");
httpget.setParameter("APIVersion","001.001.002.001");
//String sengmsg = URLEncoder.encode("<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\" ?><ICBCAPI><in><orderNum>A0011</orderNum><tranDate>20061103</tranDate><ShopCode>0200EC20000071</ShopCode><ShopAccount>0200029109000025233</ShopAccount></in></ICBCAPI>");
httpget.setParameter("MerReqData","<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\" ?><ICBCAPI><in><orderNum>A0011</orderNum><tranDate>20061103</tranDate><ShopCode>0200EC20000071</ShopCode><ShopAccount>0200029109000025233</ShopAccount></in></ICBCAPI>");
System.out.println("设定好元素了");
System.out.println(httpget.getPath());
client.executeMethod(httpget);
System.out.println("发送了");
System.out.println("server responding body :" + httpget.getResponseBodyAsString());

System.out.println("server responding code :" + httpget.getStatusLine().toString());
}
}



报这个错误,求解
Exception in thread "main" javax.net.ssl.SSLHandshakeException: Server chose SSLv3, but that protocol version is not enabled or not supported by the client.
at sun.security.ssl.ClientHandshaker.serverHello(Unknown Source)
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
at sun.security.ssl.Handshaker.processLoop(Unknown Source)
at sun.security.ssl.Handshaker.process_record(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)
at sun.security.ssl.AppOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:502)
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1973)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:993)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
at com.icbc.SSL.SSLSendAndRec.main(SSLSendAndRec.java:58)
...全文
477 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zero959 2015-05-28
  • 打赏
  • 举报
回复
有大神能帮助下吗?我用的是8U45最新的JDK,翻看了下更新文档说的是禁用了SSLV3协议,那我要如何解决?还是说使用底版本的JDK?

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧