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>
  • 相关阅读:
    使用客户端模型编程处理外部列表
    在 SharePoint2010 中使用 XML 查看器取得其他站点的内容列表
    在 SharePoint2010 中编程方式使用 BCS
    使用 zip 压缩包手动安装 Orchard
    NuGet Action Plan 更新到 1.1, 设置自动更新,获取 NuGet 包浏览器
    Percentage Closer Filtering
    Direct3D轮回:游戏特效之全屏泛光(Bloom)
    高斯模糊
    Shadow Map
    像素级动态模糊(Pixel Motion Blur)
  • 原文地址:https://www.cnblogs.com/handongxue/p/10000829.html
Copyright © 2011-2022 走看看