axis方式调用WebService接口
xml转json
一、引入pom文件或jar包
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
二、写调用工具类
public static String invokeByAxis(Map<String,Object> dataMap, String endPoint, String namespace, String method) {
String responseXML = ""
Service service = new Service()
try {
Call call = (Call) service.createCall()
//设置请求超时时间
call.setTimeout(5000)
//webservice接口地址
call.setTargetEndpointAddress(endPoint)
//请求方法
call.setOperationName(method)
//请求命名空间
call.setOperationName(new javax.xml.namespace.QName(namespace, method))
//是否是soapaction
call.setUseSOAPAction(true)
//封装请求参数
Set<String> set = dataMap.keySet()
List<Object> objParams = new ArrayList<>()
for(Iterator<String> it=set.iterator()
String key = it.next()
Object value = dataMap.get(key)
objParams.add(value)
call.addParameter(key, org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN)
}
call.setReturnType(XMLType.XSD_STRING)
responseXML = (String) call.invoke(objParams.toArray())
} catch (Exception e) {
logger.error("WebService请求异常!原因: "+e.fillInStackTrace())
}
return responseXML
}
三、xml转json
public static String xmlToJSON(String xml,String charset) {
JSONObject obj = new JSONObject();
try {
InputStream is = new ByteArrayInputStream(xml.getBytes(charset));
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(is);
Element root = doc.getRootElement();
Map map=iterateElement(root);
obj.put(root.getName(),map);
return obj.toString();
} catch (Exception e) {
logger.error("xml转json异常!xml为:"+xml+"-------原因:"+e.fillInStackTrace());
return null;
}
}
private static Map iterateElement(Element root) {
List childrenList = root.getChildren();
Element element = null;
Map map = new HashMap();
List list = null;
for (int i = 0; i < childrenList.size(); i++) {
list = new ArrayList();
element = (Element) childrenList.get(i);
if(element.getChildren().size()>0){
if(root.getChildren(element.getName()).size()>1){
if (map.containsKey(element.getName())) {
list = (List) map.get(element.getName());
}
list.add(iterateElement(element));
map.put(element.getName(), list);
}else{
map.put(element.getName(), iterateElement(element));
}
}else {
if(root.getChildren(element.getName()).size()>1){
if (map.containsKey(element.getName())) {
list = (List) map.get(element.getName());
}
list.add(element.getTextTrim());
map.put(element.getName(), list);
}else{
map.put(element.getName(), element.getTextTrim());
}
}
}
return map;
}