大家好上一篇我们讲了WebService服务开发,接下来我们将奖WebService服务调用。
环境准备:
Windows7、JDK7、Eclipse4.4.2、apache-cxf-3.1.13.zip
下载地址为:http://mirrors.tuna.tsinghua.edu.cn/apache/cxf/3.1.13/apache-cxf-3.1.13.zip
步骤:
首先需要开发一个调用端代码,代码结构如下
在Eclipse中创建一个Web应用程序,程序名为:WebserviceClientProj,项目结构如下:
开发步骤如下:
1、在非中文目录下减压apache-cxf-3.1.13.zip即可
2、cmd打开windows命令行窗口,切换到apache-cxf-3.1.13的bin目录:cd /d E:\MyFolder\apache-cxf-3.1.13\bin
生成代码如下:
4、把生成的代码复制到WebserviceClientProj的src目录下
5、创建时间转化类DateTransformUtils.java
package cn.com.utils;
import java.util.Calendar;
import java.util.Date;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
/**
* @author xu.hongsheng
* @date 2017-09-30
* 功能描述:时间转换
*/
public class DateTransformUtils {
/**
* 将Date类转换为XMLGregorianCalendar
* @param date
* @return
*/
public static XMLGregorianCalendar dateToXmlDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
DatatypeFactory dtf = null;
try {
dtf = DatatypeFactory.newInstance();
} catch (DatatypeConfigurationException e) {
e.printStackTrace();
}
XMLGregorianCalendar xMLGregorianCalendar = dtf
.newXMLGregorianCalendar();
xMLGregorianCalendar.setYear(cal.get(Calendar.YEAR));
// 由于Calendar.MONTH取值范围为0~11,需要加1
xMLGregorianCalendar.setMonth(cal.get(Calendar.MONTH) + 1);
xMLGregorianCalendar.setDay(cal.get(Calendar.DAY_OF_MONTH));
xMLGregorianCalendar.setHour(cal.get(Calendar.HOUR_OF_DAY));
xMLGregorianCalendar.setMinute(cal.get(Calendar.MINUTE));
xMLGregorianCalendar.setSecond(cal.get(Calendar.SECOND));
return xMLGregorianCalendar;
}
/**
* 将XMLGregorianCalendar转换为Date
* @param xMLGregorianCalendar
* @return
*/
public static Date xmlDate2Date(XMLGregorianCalendar xMLGregorianCalendar) {
return xMLGregorianCalendar.toGregorianCalendar().getTime();
}
}
6、在UserService_UserServiceImplPort_Client.java类中新增如下代码:
cn.com.QryPageList.Arg0 _qryPageList_arg0 = null;
//初始化传参对象
_qryPageList_arg0 = new cn.com.QryPageList.Arg0();
//从传参对象中获取一个key/value的实体类集合
List<QryPageList.Arg0.Entry> entryList = _qryPageList_arg0.getEntry();
//以HashMap为参数
HashMap<String,Object> paramMap = new HashMap<String,Object>();
paramMap.put("userName", "xhsh1234567890000");
paramMap.put("userPassword", "123456");
//把HashMap为参数 转存到entryList对象,通过entryList作为载体把参数传给服务端
for (Map.Entry<String, Object> entry1 : paramMap.entrySet()) {
Entry paramEntry = new Entry();
paramEntry.setKey( entry1.getKey());
paramEntry.setValue( entry1.getValue());
entryList.add(paramEntry);
}
java.util.List<cn.com.User> _qryPageList__return = port.qryPageList(_qryPageList_arg0);
System.out.println("qryPageList.result=" + _qryPageList__return);
System.out.println("服务端返回用户名:"+_qryPageList__return.get(0).getUserName());
System.out.println("服务端返回生日:"+_qryPageList__return.get(0).getBirthDay());
}
{
System.out.println("Invoking insert...");
cn.com.User _insert_arg0 = null;
//向服务端的insert方法传入用户的生日
_insert_arg0 = new User();
_insert_arg0.setBirthDay(DateTransformUtils.dateToXmlDate(new Date()));
port.insert(_insert_arg0);
添加参考位置如下:
7、运行UserService_UserServiceImplPort_Client.java类,得到如下结果,则测试成功
服务端收到的参数如下:
客户端收到的参数如下: