webservice客户端编写(axis2)不需要采用命令行生成,可直接调用
需要的jar,这个找的是最费时间的,需要试试,可能会稍有不同,可根据报错来增删
package com.test.manage;
import java.util.Iterator;
import java.util.List;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
/**
* 客户端程序,采用axis2方法document,不需要生成,自动调用
* @author lili
*
*/
public class TestClient {
public static void getMsg(){
try {
ParseXmlService services = new ParseXmlService();
String url = "http://127.0.0.1:8090/Test";
Options options = new Options();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(url);
options.setTo(targetEPR);
ServiceClient sender = new ServiceClient();
sender.setOptions(options);
OMFactory fac = OMAbstractFactory.getOMFactory();
String tns = "http://manage.test.com/";
// 命名空间,有时命名空间不增加没事,不过最好加上,因为有时有事,你懂的
OMNamespace omNs = fac.createOMNamespace(tns, "");
// 参数1名称
OMElement id = fac.createOMElement("id", omNs);
// 参数2名称
OMElement name = fac.createOMElement("name", omNs);
// 给参数赋值
id.setText("1");
name.setText("2");
OMElement method = fac.createOMElement("getXml", omNs);
method.addChild(id);
method.addChild(name);
method.build();
OMElement result = sender.sendReceive(method);
@SuppressWarnings("rawtypes")
Iterator itr = result.getChildElements();
while (itr.hasNext()) {
OMElement ome_l2 = (OMElement) itr.next();
System.out.println(ome_l2.getText());//此为你服务端传过来的xml内容,下一步,你需要解析xml
List<MemBean> list = services.parseXml(ome_l2.getText());
for(int i = 0;i<list.size();i++){
System.out.println(list.get(i).toString());
}
}
System.out.println(result);
System.out.println(result.getText());
} catch (AxisFault axisFault) {
axisFault.printStackTrace();
}
}
public static void main(String[] args) {
getMsg();
}
}
代码连接为客户端以及服务端,有需要的可以下载看看