JAVA访问HTTPS协议的Web Service . jdk安裝ser方法

JAVA访问HTTPS协议的Web Service . jdk安裝ser方法

 

一朋友因工作需要,要访问HTTPS协议的Web Service,与其一同摸索,终于解决。

欣喜之余,记录下来供需要的网友参考。

 

1. 下载证书

访问服务的WSDL地址,比如 https://访问站点地址/nealnet-epcis/query?wsdl 

浏览器会提示证书错误或此网站未经过身份验证。点击查看证书,选择详细信息选项页,可以看到“复制到文件”按钮。

点击保存证书,格式选择为“DER 编码二进制 X.509 (.CER)”,例如保存为 nealnet.cer。

2. 把证书导入到keystore中

通常情况下,JAVA信任库在 C:\Program Files\Java\jdk1.6.0_27\jre\lib\security\cacerts

不同的安装路径会略有不同。

执行 keytool -import -trustcacerts -keystore "C:\Program Files\Java\jdk1.6.0_27\jre\lib\security\cacerts" -storepass changeit -alias nealnet -file nealnet.cer

其中,-alias nealnet 用于指定别名,nealnet.cer 为上面保存的证书。别忘了在命令行提示符执行的时候,证书要在当前路径下哦!

导入之后可以验证一下是否成功

keytool -keystore "C:\Program Files\Java\jdk1.6.0_27\jre\lib\security\cacerts" -storepass changeit -list -alias nealnet

3. 使用CXF wsdl2java工具生成ws客户端代码

wsdl2java -frontend jaxws21 -p com.xxx.ws.nealnet -d src -client https://访问站点地址/nealnet-epcis/query?wsdl

这里值得注意的是,访问站点的地址一定要跟证书的主题属性中的(CN)一致。

如果证书主题属性中,是站点名称,那么切忌不要用IP地址访问。

4. 调用服务

按照上面生成的代码是采用JAXWS API来创建代理对象的,与调用未加密WS服务不同的是,对目标访问地址作一下转换。

URL wsdlURL = MyService.class.getClassLoader.getResource(
	"https://访问站点地址/nealnet-epcis/query?wsdl"); 
QName serviceName = new QName("urn:myService", "MyService"); 
MyService service = new MyService(wsdlURL, serviceName); 
ServicePort client = service.getServicePort(); 
BindingProvider provider = (BindingProvider)client; 
// You can set the address per request here 
provider.getRequestContext().put( 
	BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
	"http://访问站点地址/nealnet-epcis/query?wsdl");


以上代码是从CXF官网找到的,大致的意思处理请求或响应的协议绑定,采用非加密方式。

(这纯属个人理解,似懂非懂,还忘大虾们指正)。采用其他方式创建代理对象的,个人未曾尝试,也就不班门弄斧了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值