zoukankan      html  css  js  c++  java
  • 【Java】webservice调用

    最近一个项目要调用.net开发的webservice服务,研究好一阵才调试通过,用了两种调用方式,记录一下。

    EndpointReference targetEPR = new EndpointReference(getUrl(referToOrgCode));// 指定调用WebService的URL
    Map<String, Object> objMap = new HashMap<String, Object>(); if(referToOrgCode.equals("12152501460785224W")){ //调用.net发布的webservice Options options = new Options(); options.setTimeOutInMilliSeconds(3*60*1000); //设置超时时间 options.setAction(getNs(referToOrgCode) + getMethodName(referToOrgCode));//设置action options.setTo(targetEPR); options.setProperty(HTTPConstants.CHUNKED, "false");// 设置不受限制 ServiceClient sender = new ServiceClient(); sender.setOptions(options); OMFactory fac = OMAbstractFactory.getOMFactory(); OMNamespace omNs = fac.createOMNamespace(getNs(referToOrgCode), ""); OMElement method = fac.createOMElement(getMethodName(referToOrgCode), omNs); OMElement name = fac.createOMElement("reqParam", omNs);// 设置入参名称 name.setText(methodParam);// 设置入参值 method.addChild(name); method.build(); OMElement response = sender.sendReceive(method); OMElement elementReturn = response.getFirstElement(); objMap.put("resultContent", elementReturn.getText()); }else{ RPCServiceClient client = new RPCServiceClient(); Options options = client.getOptions(); options.setTimeOutInMilliSeconds(3*60*1000); options.setTo(targetEPR); options.setAction(getNs(referToOrgCode) + getMethodName(referToOrgCode)); // 指定service方法的参数值 Object[] parmas = new Object[] { methodParam.toString() }; // 指定service方法返回值的数据类型的Class对象 Class<?>[] classes = new Class[] { String.class }; // 指定要调用的service方法及WSDL文件的命名空间 // QName opAddEntry = new QName(getNs(referToOrgCode), // getMethodName(referToOrgCode)); QName opAddEntry = new QName(getNs(referToOrgCode), getMethodName(referToOrgCode), getPrefix(referToOrgCode)); // 调用service方法并输出该方法的返回值 Object[] str = client.invokeBlocking(opAddEntry, parmas, classes); objMap.put("resultContent", str[0].toString()); }

      依赖:

    <version.axiom>1.2.13</version.axiom>
    <version.axis2>1.6.2</version.axis2>
    <dependency>
        <groupId>org.apache.ws.commons.axiom</groupId>
        <artifactId>axiom-api</artifactId>
        <version>${version.axiom}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.ws.commons.axiom</groupId>
        <artifactId>axiom-impl</artifactId>
        <version>${version.axiom}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-adb</artifactId>
        <version>${version.axis2}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-kernel</artifactId>
        <version>${version.axis2}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-http</artifactId>
        <version>${version.axis2}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-local</artifactId>
        <version>${version.axis2}</version>
    </dependency>
  • 相关阅读:
    mysql binlog参数设置
    poj 2774 最长公共子--弦hash或后缀数组或后缀自己主动机
    Base64编码和解码算法
    怎样给你的Android 安装文件(APK)减肥
    JAXB 注解
    编程获取linux的CPU使用的内存使用情况
    那么温暖http合约,入门。
    什么是关账?
    经营活动现金净流量与总股本之比和经营活动现金净流量与净资产之比
    P2P风险淮安样本:5000万连锁漩涡牵出银行内案
  • 原文地址:https://www.cnblogs.com/handongxue/p/10000829.html
Copyright © 2011-2022 走看看