java 调用webservice 接口,并解析返回参数
1. 设置传参,例如以下格式:
String reqXml = "<createAppParam>\n" +
"<serviceUserName>auth</serviceUserName>\n" +
"<servicePwd>auth</servicePwd>\n" +
"<rootTicket>"+rootTicket+"</rootTicket>\n" +
"<appAccount>"+userAccount+"</appAccount>\n" +
"<resNum>1000</resNum>\n" +
"<operationCode>"+operationCode+"</operationCode>\n" +
"<functionCode>668801</functionCode>\n" +
"<authMode>"+mode+"</authMode>\n" +
"<applyReason>"+sendApplyParam.getCerReason()+"</applyReason>\n" +
"<userTimes>9999</userTimes>\n" +
"<duration>"+sendApplyParam.getExpire()+"</duration>\n" +
"<userIP>"+ip+"</userIP>\n" +
"<selectedApprover>"+sendApplyParam.getApproverId()+"</selectedApprover>\n" +
"<workOrderID>999999</workOrderID>\n" +
"<workOrderType>9999</workOrderType>\n" +
"</createAppParam>\n";
2. 调用对端接口
String result = DocumentTrans.send(reqXml,applyInfoUrl,type);
调用实现代码
public static String send(String params,String url,String type) {
log.info("===传递的参数==="+params);
log.info("===请求路径==="+url);
String result="";
org.apache.axis.client.Service service = new org.apache.axis.client.Service();
Call call = null;
try {
call = service.createCall();
} catch (ServiceException e) {
e.printStackTrace();
}
call.setTargetEndpointAddress(url);
call.addParameter("in0",
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
try {
result = (String) call.invoke(QName.valueOf(type), new Object[]{params});
} catch (Exception e) {
e.printStackTrace();
throw new NrmsYnException("接口异常");
}
return result;
}
2.解析返回的参数,转为List<Map<String, String>>
public static Document DocumentHelperreadStringXml(String xmlContent) {
Document document = null;
try {
document = DocumentHelper.parseText(xmlContent);
} catch (DocumentException e1) {
e1.printStackTrace();
}
return document;
}
public static List<Map<String, String>> Documentanalysis1(Document doc) {
List<Map<String, String>> uploadList = new ArrayList<Map<String, String>>();
Element html = doc.getRootElement();
List<Element> head = html.elements();
Set<String> set = new HashSet<>();
head.forEach(a -> {
set.add(a.getName());
});
set.forEach(a -> {
List<Element> elements = html.elements(a);
elements.forEach(b -> {
Map<String, String> uploadMap = new HashMap<>();
uploadMap.put(b.getName(), b.getText());
uploadList.add(uploadMap);
});
});
return uploadList;
}