使用XFire客户端调用webservice时,如果服务端的参数为日期类型,那么只能使用XMLGregorianCalendar类型作为客户端的参数,否则可能会出现ClassCastException(webservice发布时,会将Date类型转换为XMLGregorianCalendar类型)。下边是一个日期类型的调用示例:
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import org.codehaus.xfire.client.Client;
public class Test {
public static void main(String[] args) throws MalformedURLException, Exception {
Client client=new Client(new URL("http://localhost:8080/XFireService/services/BookService?wsdl"));
DatatypeFactory factory = DatatypeFactory.newInstance();
XMLGregorianCalendar calendar = factory.newXMLGregorianCalendar((GregorianCalendar)Calendar.getInstance());
Object[] obj=client.invoke("getDate",new Object[]{calendar});
System.out.println(obj[0]);
}
}