Java webservice 传xml_java 调用webservice并解析xml结果

@Slf4jpublic classTest {static final String url = "http://localhost:8091/roadcqc_webservice_war_exploded/services/loginIntf?wsdl";static final String method = "getToken";static final String targetNamespace = "http://login.webserivce.server.roadcqc.yemast.com";public static voidmain(String[] args) {

axis2WebService();

}private static voidaxis2WebService() {try{//参数值

UserInfoRequest u = newUserInfoRequest();

u.setUploadDateTime("2020-06-01");

u.setUserName("admin");

u.setPassword("admin");

u.setUploadDateTime("2020-01-1");

u.setToken("");

OMElement o=requestWs(targetNamespace,url,method,u);

Map m=getResultToMap(o);

System.out.println(m.toString());

}catch(Exception ex) {

ex.printStackTrace();

}

}private staticOMElement requestWs(String targetNamespace, String url, String method, Object o) {try{

ServiceClient sender= newServiceClient();

EndpointReference endpointReference= newEndpointReference(url);

Options options= newOptions();

options.setTo(endpointReference);

sender.setOptions(options);

OMFactory fac=OMAbstractFactory.getOMFactory();//这个和qname差不多,设置命名空间

OMNamespace omNs = fac.createOMNamespace(targetNamespace, ""); //这个是namespace的str

OMElement data = fac.createOMElement(method, omNs); //method是方法

QName qname = new QName("request"); //固定的request参数 webservice接收参数的名称

OMElement inner =fac.createOMElement(qname);if (o != null) { //通过反射获取参数

Class c =o.getClass();

Field[] fields=c.getDeclaredFields();for(Field f : fields) {

f.setAccessible(true);

QName qname1= newQName(f.getName());

OMElement inner1=fac.createOMElement(qname1);

inner1.setText(String.valueOf(f.get(o)));

inner.addChild(inner1);

}

}

data.addChild(inner);//发送数据,返回结果

OMElement omElement =sender.sendReceive(data);returnomElement;

}catch(Exception e) {

log.error("ws error:", e);

}return null;

}//解析返回的结果

public static MapgetResultToMap(OMElement element) {

Map map = new HashMap<>();if(element == null ) returnmap;

Iterator iterator= element.getChildElements();//response

while (iterator.hasNext()) { //n:return

OMElement result =(OMElement) iterator.next();

Iterator iterator_layer2=result.getChildElements();while (iterator_layer2.hasNext()) { //结果

OMElement result_2 =(OMElement) iterator_layer2.next();

String key=result_2.getLocalName();

String value=result_2.getText();

map.put(key, value);

}

}returnmap;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值