版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yswKnight/article/details/82225895
axis方式调用WebService接口
xml转json
一、引入pom文件或jar包
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
二、写调用工具类
/**
* axis方式访问webservice
*
* @param dataMap
* 请求的xml的报文
* @param endPoint
* webservice的wsdl地址,例如:http://localhost:8080/project/services/mainName?wsdl
* @param namespace
* 调用方法的命名空间
* @param method
* 调用的方法名
* @return 返回调用的报文(xml)
*
*/
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(); it.hasNext();){
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
/**
* xml转json
* @param xml
* @param jsonType
* @return
*/
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;
}