`
ynp
  • 浏览: 439706 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AXIS通过wsdl2java程序调用Gsoap发布的服务

阅读更多

AXIS通过wsdl2java程序调用Gsoap发布的服务

Gsoap 生成的服务见 以前写的文章。

--》add.wsdl
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="add"
targetNamespace="http://localhost/add.wsdl"
xmlns:tns="http://localhost/add.wsdl"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns="urn:add"
xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:MIME="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:DIME="http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/"
xmlns:WSDL="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://schemas.xmlsoap.org/wsdl/">

<types>

<schema targetNamespace="urn:add"
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:ns="urn:add"
  xmlns="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="unqualified"
  attributeFormDefault="unqualified">
  <import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
  <!-- operation request element -->
  <element name="add">
   <complexType>
    <sequence>
     <element name="num1" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- ns__add::num1 -->
     <element name="num2" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- ns__add::num2 -->
    </sequence>
   </complexType>
  </element>
  <!-- operation response element -->
  <element name="addResponse">
   <complexType>
    <sequence>
     <element name="sum" type="xsd:int" minOccurs="0" maxOccurs="1" nillable="true"/><!-- ns__add::sum -->
    </sequence>
   </complexType>
  </element>
</schema>

</types>

<message name="addRequest">
<part name="parameters" element="ns:add"/><!-- ns__add::ns__add -->
</message>

<message name="addResponse">
<part name="parameters" element="ns:addResponse"/>
</message>

<portType name="addPortType">
<operation name="add">
  <documentation>Service definition of function ns__add</documentation>
  <input message="tns:addRequest"/>
  <output message="tns:addResponse"/>
</operation>
</portType>

<binding name="add" type="tns:addPortType">
<SOAP:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="add">
  <SOAP:operation soapAction=""/>
  <input>
     <SOAP:body parts="parameters" use="literal"/>
  </input>
  <output>
     <SOAP:body parts="parameters" use="literal"/>
  </output>
</operation>
</binding>

<service name="add">
<documentation>gSOAP 2.8.3 generated service definition</documentation>
<port name="add" binding="tns:add">
  <SOAP:address location="http://localhost/add.cgi"/>
</port>
</service>

</definitions>


--》新建批处理 通过 wsdl2java 生成代码

set Axis_Lib=E:/mysoft/axis-1_4/lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=E:/mysoft/axis-1_4/mytest
set Package=com.sf
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% add.wsdl

--》测试代码
/**
* 方式一  通过查看 wsdl 直接访问
*/
package com.sf;

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class Test {
public static void main(String[] args) {

try {

String endpoint = "http://localhost:5555/?wsdl";
// 直接引用远程的wsdl文件

// 以下都是套路
Service service = new Service();

Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("urn:add", "add"));// WSDL里面描述的接口名称

call.addParameter("num1",
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);// 接口的参数

call.addParameter("num2",
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);// 接口的参数

call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型

Object[] c = { 6, 2 };

String result = (String) call.invoke(c);

// 给方法传递参数,并且调用方法

System.out.println("result is " + result);

}

catch (Exception e) {

System.err.println(e.toString());

}

}

}

/**
* 方式二  通过wsdl2java 
*/
package com.sf;

import java.net.MalformedURLException;
import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;

public class Test2 {
public static void main(String[] args) throws MalformedURLException, ServiceException, RemoteException {
        Add_Service service = new Add_ServiceLocator();
        AddPortType client = service.getadd(new java.net.URL("http://localhost:5555/?wsdl")) ;
//        AddPortType client = service.getadd() ;
        int result = client.add(5,6);
        System.out.println(result);
}
}

--》javaScript 测试
var call=new WS.Call(wsAddress);
var nsuri='urn:add';
var type_int=new WS.QName('int','http://www.w3.org/2000/10/XMLSchema');
var type_string=new WS.QName('string','http://www.w3.org/2000/10/XMLSchema');

var qn_op1=new WS.QName('add',nsuri);
//var qn_op1_resp=new WS.QName('getAttrTypeResponse',nsuri);
//top.add=add;
function add(num1,num2) {
call.invoke_rpc(
    qn_op1
    ,new Array(
        {name:'num1',value:num1,xsitype:type_int}
        ,{name:'num2',value:num2,xsitype:type_int}
    )
    ,null
    ,function (call,envelope) {
    var xbody=envelope.get_body().get_all_children()[0].get_all_children()[0].get_value();
//     top.createMenuByString(xbody,x,y);
    console.log(xbody);
    }
)
}


--》下一步进行非基本类型数据交互
--》参考
Java调用以WSDL形式发布的web service .
http://blog.csdn.net/boy_wh520/article/details/1601756
使用AXIS调用WSDL描述的Web服务
http://www.blogjava.net/mrcold/archive/2009/06/17/220044.html
wsdl -axis-webservise(测试通过) .
http://blog.csdn.net/renhui15688/article/details/4261026
分享到:
评论

相关推荐

    根据wsdl使用gsoap生成的服务器和客户端

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而WSDL(Web Service Description Language)则是一种XML格式,用于定义这些服务的接口。本文将深入探讨如何利用gSOAP工具根据WSDL文件生成C或C++语言的...

    根据wsdl访问链接如何调用webService接口

    要根据WSDL调用Web服务接口,首先你需要获取到服务的WSDL URL。 以下是一般的步骤: 1. **获取WSDL文档**:你可以从服务提供者那里获取到WSDL链接,或者在服务端找到公开的WSDL文件。在本例中,由于没有具体链接,...

    基于axis2的webservice

    Axis2通过这些标准实现了Web服务的发布、调用和管理。 3. **Axis2的优势** - **模块化架构**:Axis2采用模块化设计,使得服务可以根据需要动态加载或卸载模块,提高了灵活性和可扩展性。 - **高性能**:Axis2优化...

    gSoap webservices C++ 客户端

    在本场景中,我们将关注如何使用gSoap来构建一个C++客户端,以便调用由Java的Axis框架编写的Web服务。 1. **gSoap的基本概念** gSoap的主要功能是自动生成客户端和服务器的代码,这些代码能够处理SOAP消息的编码和...

    AXIS Web Service入门及应用

    1. 创建Web服务:你可以使用AXIS提供的wsdl2java工具,根据WSDL(Web服务描述语言)文件自动生成Java源代码。这将为你提供一个服务接口和服务实现模板。 2. 实现服务:在生成的服务实现类中添加业务逻辑,使Web服务...

    java调用.net写的Webservice整理.pdf

    除了Apache Axis,Java还可以使用JAX-WS(Java API for XML Web Services)标准来调用Web服务,或者使用第三方库如gSOAP、cxf等。每种方法都有其优缺点,选择取决于具体需求和项目环境。 10. **安全性**: 在实际...

    一分钟学会用C++调用Web Service Demo程序源码

    在C++中调用Web Service,通常使用一些库或框架,例如gSOAP、Apache Axis C++等。这些工具提供了处理SOAP消息和解析WSDL文档的功能。以gSOAP为例,它能够自动生成C++客户端代码,简化调用Web Service的过程。 在给...

    SOAP客户端用例

    在Axis2中,开发者可以使用WSDL(Web Services Description Language)来定义服务接口,然后使用Axis2工具生成服务骨架和客户端代码。 `axis2客户端编码,RPC,OMElement,上传下载实现,服务端验证.txt`文件名暗示了更...

    webservice_简介

    通过以上步骤,我们可以在Axis2服务器上部署一个简单的Webservice,并通过gSOAP客户端进行测试和调用。 综上所述,Webservice作为一种跨平台、跨语言的技术,通过WSDL、SOAP和XML等标准技术,实现了不同应用程序...

    webservice安装组件

    WSDL生成器可以帮助开发者自动生成或编辑WSDL文件,如Apache CXF的wsdl2java工具。 5. **UDDI注册中心**:UDDI服务目录用于发布和查找Web服务。虽然现在UDDI的使用已不如从前,但在某些企业级环境中仍然有其价值。 ...

    webservice测试demo.rar

    3. **客户端库的使用**:根据DEMO,可能使用了像 Axis2, JAX-WS, gSOAP 等工具或框架,这些工具可以帮助简化Web服务的调用过程。 4. **XML和XSD**:Web服务通常涉及XML数据交换,因此你需要理解XML的结构和XSD(XML...

    西北工业大学软件工程WebServices实验报告

    2. **工具**:Apache Axis2、JAX-WS、gSOAP等是常见的Web Services生成和调用工具,用于快速构建和部署服务。 四、实验步骤与实践 1. **创建服务**:实验可能涉及使用Java JAX-WS或.NET的ASMX创建一个简单的...

    异构语言交互访问 解决方案及例子(二)

    除了gSOAP,还有其他工具和框架,如Apache Axis(Java)、PySOAP(Python)等,它们也提供了类似的跨语言通信能力。然而,选择哪种工具取决于项目需求,例如性能、语言支持、易用性和社区支持。 总的来说,异构语言...

    Onvif详细介绍

    WebServices是一种网络服务,允许不同的系统之间通过网络实现功能调用和服务交互,这极大地简化了不同系统之间的集成。 ##### WebService的基本流程 - **建立连接**:客户端与服务端之间通过TCP/IP或其他协议(如...

    Web Service入门经典

    - 在 Java 平台上,通常使用 JAX-WS 或者 Axis2 等工具。 - 对于跨平台的解决方案,有开源的工具如 Apache CXF 和 gSOAP。 总之,Web Service 是现代企业级系统集成的重要工具,通过标准化的接口和通信协议,实现...

    soap获取天气lib静态库

    C++虽然不是一种典型的Web编程语言,但通过各种库如gSOAP、Apache Axis C++等,可以方便地与SOAP Web服务交互。这些库提供了生成客户端代理类的功能,使得开发者能以面向对象的方式调用远程Web服务。 3. gSOAP库: ...

Global site tag (gtag.js) - Google Analytics