java:AXIS调用webService接口,返回String类型xml,并用dom4j简单解析xml

一、使用axis调用webService接口,返回String类型xml

1.导入axis依赖

2.直接贴代码

 /**
     * 调用webservice接口的方法,并返回String类型的xml
     * @param readid 传入接口的参数
     * @param url webservice的路径
     * @return String类型的xml
     * @throws Exception
     */
    public static String getRainfall(String readid, String url) throws Exception {
        //具体不知道干啥的,可以控制下方参数的类型
//        OperationDesc oper=new OperationDesc();
//        ParameterDesc param;
//        oper.setName("方法名");

        //创建service 实例
        Service service = new Service();

        //通过service 创建Call 实例
        Call call = (Call) service.createCall();

        //第一个参数命名空间,第二个参数方法名
        QName qname = new QName("命名空间", "方法名");  //(targetNamespace, element name)
        call.setOperationName(qname);//设置调用远程方法的路径     同 :call.setOperationName(new QName("http://WebXml.com.cn/","getTVprogramString"))

        //将Web Service的服务路径加入到call实例之中
        call.setTargetEndpointAddress(new URL(url));

        //添加参数
        call.addParameter("readid", XMLType.XSD_STRING, ParameterMode.IN);

        //设置传入参数的类型,如果webservice已经确定参数类型,可不写,自己调用此方法时定义参数类型即可
        //new QName("http://www.w3.org/2001/XMLSchema","int")    ---http://www.w3.org/2001/XMLSchema 为int类型对应的url
//        param = new ParameterDesc(new QName("命名空间",id),ParameterDesc.IN,new QName("http://www.w3.org/2001/XMLSchema","int"),int.class,false,false);
//        param.setOmittable(true);
//        oper.addParameter(param);
//        param = new ParameterDesc(new QName("命名空间","readid"),ParameterDesc.IN,new QName("http://www.w3.org/2001/XMLSchema","String"),String.class,false,false);
//        param.setOmittable(true);
//        oper.addParameter(param);

        //设置返回类型,不写会报错 我这里返回的是字符串
        call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
        String Msg = (String) call.invoke(new Object[]{readid});
        System.out.println(Msg);
        return Msg;

    }

二、使用dom4j简单解析xml

1.直接上代码

 /**
     * 解析String类型的xml
     * @param strXML  String类型的xml
     * @throws Exception
     */
    public static void getParam(String strXML) throws Exception {

        Document document = DocumentHelper.parseText(strXML);
        //根据节点对象获取相应信息
        String ID = document.selectSingleNode("//ID").getText();//获取节点对象,注意引号内的“//”必须加 ,否则报错  水库id
        String M1 = document.selectSingleNode("//M1").getText();
        String M10 = document.selectSingleNode("//M10").getText();
        String M60 = document.selectSingleNode("//M60").getText();
        String D1 = document.selectSingleNode("//D1").getText();
        String TOTAL = document.selectSingleNode("//TOTAL").getText();
        String WATERLEVEL = document.selectSingleNode("//WATERLEVEL").getText();
        String TEMPERATURE = document.selectSingleNode("//TEMPERATURE").getText();
        String WORKVOL = document.selectSingleNode("//WORKVOL").getText();

        String CHARGEVOL = document.selectSingleNode("//CHARGEVOL").getText();
        String NETSTATUS = document.selectSingleNode("//NETSTATUS").getText();
        String RAINSTATUS = document.selectSingleNode("//RAINSTATUS").getText();
        String WATERSTATUS = document.selectSingleNode("//WATERSTATUS").getText();
        String RAINTM = document.selectSingleNode("//RAINTM").getText();
        String WATERTM = document.selectSingleNode("//WATERTM").getText();
        String VOLTM = document.selectSingleNode("//VOLTM").getText();
        String TM = document.selectSingleNode("//TM").getText();

        System.out.println(":" + ID); //此时输出结果极为字符串:3333
        System.out.println(":" + M1);
        System.out.println(":" + M10);
        System.out.println(":" + M60);
        System.out.println(":" + D1);
        System.out.println(":" + TOTAL);
        System.out.println(":" + WATERLEVEL);
        System.out.println(":" + TEMPERATURE);
        System.out.println(":" + WORKVOL);
        System.out.println(":" + CHARGEVOL);
        System.out.println(":" + NETSTATUS);
        System.out.println(":" + RAINSTATUS);
        System.out.println(":" + WATERSTATUS);
        System.out.println(":" + RAINTM);
        System.out.println(":" + WATERTM);
        System.out.println(":" + VOLTM);
        System.out.println(":" + TM);

    }

三、在main方法中上面两个方法测试

    public static void main(String[] args) throws Exception {
        //必填,否者报错: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V
        System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");

        //xmlStr为上图格式的字符串
        getParam(getRainfall("参数", "webService路径"));


    }

测试结果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Java Axis2 调用 WebService 接口可以通过以下步骤实现: 1. 下载并安装 Axis2。你可以从官方网站下载安装包,或者从 Maven 中央仓库获取依赖。 2. 创建一个 Java 项目,并将 Axis2 WebService 客户端库添加到项目依赖中。 3. 根据 WebService WSDL 文件生成客户端代码。你可以使用 Axis2 自带的 wsdl2java 工具,在命令行中运行以下命令: ``` wsdl2java -uri <wsdl-url> -p <package-name> -d <output-directory> ``` 其中,`<wsdl-url>` 是 WebService 的 WSDL 文件地址,`<package-name>` 是你想要生成代码的 Java 包名,`<output-directory>` 是生成代码的输出目录。 4. 在你的 Java 代码中创建 WebService 客户端对象,并调用 WebService 方法。例如: ``` MyWebServiceStub stub = new MyWebServiceStub(); MyWebServiceStub.MyWebServiceRequest request = new MyWebServiceStub.MyWebServiceRequest(); request.setParameter("value"); MyWebServiceStub.MyWebServiceResponse response = stub.myWebServiceMethod(request); System.out.println(response.getResult()); ``` 这里的 `MyWebServiceStub` 是在第三步中生成的客户端代码中的类名,`myWebServiceMethod` 是 WebService 的方法名,`MyWebServiceRequest` 和 `MyWebServiceResponse` 是方法的请求和响应对象。 以上就是使用 Java Axis2 调用 WebService 接口的基本步骤。需要注意的是,在实际项目中,你可能还需要处理异常、设置 WebService 的认证和安全等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值