axis调用webservice相关工具类

本文介绍使用Apache Axis客户端库调用WebService的方法,并提供了解析WebService返回的XML数据及将数据库查询结果转换为JSON格式的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、axis调用webservice的方法
public static String getUnionCicWebserviceResult(String URL,String nameSpaceURL, String webMethod,Object[] params) {
                        org.apache.axis.client.Service s = new org.apache.axis.client.Service();
                        Call call;
                        String val = "";
                        try {
                                    call = (Call) s.createCall();
                                    call.setTargetEndpointAddress(new java.net.URL(URL));
                                    call.setOperationName(new QName(nameSpaceURL, webMethod));
                                    for (int i = 0; i < params.length; i++) {
                                                call.addParameter("arg" + i,org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);// 此处参数名字必须为arg0,arg1形式
                                    }
                                    call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
                                    val = (String) call.invoke(params);
                        } catch (javax.xml.rpc.ServiceException e) {
                                    e.printStackTrace();
                                    return val;
                        } catch (MalformedURLException e) {
                                    e.printStackTrace();
                                    return val;
                        } catch (RemoteException e) {
                                    e.printStackTrace();
                                    return e.getMessage();
                        }
                        return val;
            }
2、解析webservice返回的xml格式的方法
/**
             * 解析华西联合门诊返回的xml字符串
             * @param xmlStr
             * @return Map<String,Object>
             */
            @SuppressWarnings("unchecked")
            public static Map<String,Object> getUnionCicResponseMap(String xmlStr) {
                        Document doc = null;
                        Map<String,Object> map = new HashMap<String, Object>();
            try {
                                                doc = DocumentHelper.parseText(xmlStr);
            // 将字符串转为XML
            Element rootElt = doc.getRootElement();
            List<Element> childElements = rootElt.elements();
                        for (Element ele:childElements) {
            //                     if("acknowledgement".equals(ele.getName())){
                                                //解析xml格式标签中的属性
                                                List attrList = ele.attributes();
                                                for (int i = 0; i < attrList.size(); i++) {
                                                    Attribute item = (Attribute)attrList.get(i);
                                                    map.put(item.getName(), item.getValue());
                                                }                       
            //                     }
                                                            map.put(ele.getName(), ele.getStringValue());
                                                }
            } catch (DocumentException e) {
                        map.put("typeCode", "AE");
                        map.put("acknowledgement", e.getMessage());
                        e.printStackTrace();
                        return map;
            }
        return map;
    }
3、将数据库查询结果封装为json格式
StringBuilder sb = new StringBuilder();
                                                // 拼装病人信息
                                                for (int i = 0; i < inofList.size(); i++) {
                                                            sb.append("{");
                                                            final Set<String> keys = inofList.get(i).keySet();
                                                            for (final String key : keys) {
                                                                        final Object value = inofList.get(i).get(key);
                                                                        sb.append("\"");
                                                                        sb.append(key);
                                                                        sb.append("\"");
                                                                        if (value != null || !"null".equals(value)) {
                                                                                    sb.append(":\"");
                                                                                    sb.append(value);
                                                                                    sb.append("\",");
                                                                        } else {
                                                                                    sb.append(":\"\",");
                                                                        }
                                                            }
                                                            sb.setCharAt(sb.length() - 1, '}');
                                                            sb.append(",");
                                                }
                                                sb.setCharAt(sb.length() - 1, ' ');
                                                json = "{\"status\":1,\"info\":[" + sb + "]}";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值