根據wsdl文件,Web工程自動生成webservice客戶端調用
1,工具:帶有webservice插件的eclips
注意:在生成客戶端代碼的同時,必須保證wsdl地址可以訪問;
2,步驟:
(1),新建一個Web工程:WSDLTest
(2),瀏覽器訪問WSDL頁面:http://192.168.28.80:8006/rzzxservices/WebService?wsdl,並另存為WebService.wsdl,將其拷貝到WSDLTest工程的根目錄下,如圖:
(3)在eclipse的新建工程中的“其他“中找到webservice client,點擊其上的browse按鈕,選擇之前的wsdl文件,點擊完成,代碼就生成了。
生成代碼,如下圖:
生成的文件中,作為接口來使用的文件名為:####Stub.java。####因webservice的類名不同而不同。這個文件中就包含了webservice的所有方法。
(4),調用服務端的代碼:
/** * Project Name:WSDLTest * File Name:Client.java * Package Name:com.xyzq.test * Date:2017年12月4日下午3:59:31 * Copyright (c) 2017 All Rights Reserved. * */ package com.xyzq.test; import java.net.MalformedURLException; import nc.xyzq.uuib.service.impl.FrServiceImplPortBindingStub; import nc.xyzq.uuib.service.impl.FrServiceImplServiceLocator; import nc.xyzq.uuib.service.impl.SysTokenBean; import nc.xyzq.uuib.service.impl.UserBean; /** * ClassName:Client * Function: TODO * Reason: TODO * Date: 2017年12月4日 下午3:59:31 * @author lizm * @since JDK 1.6 * */ public class Client { public static void main(String[] args) { // TODO Auto-generated method stub FrServiceImplServiceLocator service = new FrServiceImplServiceLocator(); java.net.URL url; try { url = new java.net.URL("http://192.168.28.80:8006/rzzxservices/WebService?wsdl"); FrServiceImplPortBindingStub stub = new FrServiceImplPortBindingStub(url, service); SysTokenBean sysTokenBean = new SysTokenBean(); UserBean userBean= new UserBean(); userBean.setClientIp("192.168.28.81"); userBean.setTs(""); userBean.setUserid("admin"); userBean.setVef("1"); sysTokenBean = stub.getSysToken(userBean); System.out.println("sysTokenBean>>>"+sysTokenBean.getToken()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
在調用##Stub.java中的方法之前,必須要實例化,具體如下:
ServiceLocator service = new ServiceLocator(); java.net.URL url = new new java.net.URL(wsdl地址); ServiceStub stub = new ServiceStub(url, service);
自動生成WSDL客戶端還有其他方法,這只是其中一種;
例如:采用插件axis2-1.6.1、JDK自帶插件wsdl2命令等;