`

基于Zend_Soap的webservice及其多语言通信(java)(二)

阅读更多

前者用Zend_Soap完成webservice以后,需要与java进行通信,这里我们只要用一个WSDL文件就可以搞定,当然,这个文件我们已经有了,IE上已经直接显示了,可以把它保存为wsdl文件,其中具体定义的内容比较复杂,我们这里只谈应用。

   java端的环境.

     1)安装jdk。

     2) 用axis1进行与php之间的通信,所以要下载axis1.4。

     3)这里用到了ant与axis1对wsdl进行解译成客户端,所以要安装ant.

     以下是ant任务的定义,主要是为了生成客户端程序。

<?xml version="1.0" encoding="UTF-8"?>
<project name="wsclient" default="all" basedir=".">
<property name="axis.home" value="C:\axis-1_4" />
<property name="options.output" location="../src"/>
<path id="axis.classpath"> 
<fileset dir="${axis.home}/lib"> 
<include name="**/*.jar" />
</fileset>    
</path> 
<taskdef resource="axis-tasks.properties" classpathref="axis.classpath" /> 
<target name="init">      
<echo>Warning: please update the associated WSDL file(s) in the folder wsdl before running the target!</echo>  
<echo>Warning: Just run the target(s) related with your developing work!</echo>  
<echo>  
</echo> 
</target> 
<target name="-WSDL2Axis" depends="init"> 
<mkdir dir="${options.output}"/>     
<axis-wsdl2java  serverside="false" output="${options.output}" url="${options.WSDL-URI}" verbose="true"/> 
</target> 
<target name="all">   
<antcall target="GatewayService"/> 
</target>  
<target name="GatewayService">
<antcall target="-WSDL2Axis">   
<param name="options.WSDL-URI" location="gateway.wsdl"/>    
</antcall> 
</target>  
</project>

 

 生成后的程序结构如下图所示



 将axis1的类库放入到classpath中来,于是调用客户端程序与php通信

package client;  

    

    

 import java.net.MalformedURLException;  

 import java.net.URL;  

 import java.rmi.RemoteException;  

    

 import javax.xml.namespace.QName;  

 import javax.xml.rpc.ServiceException;  

    

 import localhost.ZFDEMO.admin.soap.index.Custom_Soap_GatewayServiceLocator;  

 import localhost.ZFDEMO.admin.soap.index.MsgResp;  

 import localhost.ZFDEMO.admin.soap.index.User;  

 import localhost.ZFDEMO.admin.soap.index.UserPriority;  

 import localhost.ZFDEMO.admin.soap.index.Userole;  

    

 import org.apache.axis.client.Call;  

 import org.apache.axis.client.Service;  

    

    

 public class SoapClient {  

    

     /**  

      * @param args  

      * @throws ServiceException   

      * @throws RemoteException   

      */ 

     public static void main(String[] args) throws RemoteException, ServiceException {  

            

         Custom_Soap_GatewayServiceLocator locator =new Custom_Soap_GatewayServiceLocator();  

         locator.setEndpointAddress("Custom_Soap_GatewayPort", "http://localhost/ZFDEMO/admin/soap/index");  

         MsgResp logonRsp =locator.getCustom_Soap_GatewayPort().logonUser("刘少奇", "1111", "cc");  

         MsgResp logoutRsp =locator.getCustom_Soap_GatewayPort().logoutUser("刘少奇", "1111");  

         Userole userole =locator.getCustom_Soap_GatewayPort().getUserRole("刘少奇", "12345");  

         UserPriority up =locator.getCustom_Soap_GatewayPort().getUserPriority("刘少奇", "12345");  

         MsgResp rms =locator.getCustom_Soap_GatewayPort().modifyUser(new String[]{"1","刘少奇","男"}, "1111");  

            

         System.out.println(TypeUtil.typeToString("msresp for logonUser is ", logonRsp));  

         System.out.println(TypeUtil.typeToString("msresp for logoutUser is ", logoutRsp));  

         System.out.println(TypeUtil.typeToString("resp for userole is ", userole));  

         System.out.println(TypeUtil.typeToString("resp for UserPriority is ", up));  

         System.out.println(TypeUtil.typeToString("msresp for modifyUser is ", rms));  

            

     }  

    

 } 

 

得到返回值为



 这里请看客户端程序中的一段程序。

MsgResp rms =locator.getCustom_Soap_GatewayPort().modifyUser(new String[]{"1","刘少奇","男"}, "1111");

 

这里的一个string的数组,原则上应为Object的数组,因为是传入参数,所以比较好理解,这是因为php端定义了一个array类型的数据结构,如果这里的MsgResp是一个这样的数组你觉得这个数据结构好用吗?所以这里就是前篇文章中所说到的array在多语言通信中的不好的地方。

  • 大小: 12.7 KB
  • 大小: 76.1 KB
分享到:
评论

相关推荐

    php_soap webservice demo

    php扩展 php_soap webservice服务端搭建demo 附件中包含所有文件,详细说明见readme

    json.rar_Soap To json_java webservice json_json rpc SOAP_json we

    标题中的“json.rar_Soap To json_java webservice json_json rpc SOAP_json we”提到了几个关键点: 1. **SOAP to JSON**:SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web上交换结构化和...

    webservice-java_soap.pdf

    &lt;isd:java class="javasoap.book.ch5.BasicTradingService" static="false"/&gt; &lt;isd:faultListener&gt;org.apache.soap.server.DOMFaultListener ``` #### 客户端调用 客户端调用服务的过程与之前章节介绍的...

    wsdl.rar_WEBservice-Sqlserver_java webservice_webservice sgip_w

    【标签】"webservice-sqlserver java_webservice webservice__sgip wsdl_webservice_ wsdl.rar"进一步揭示了技术栈。"sqlserver"表明数据库管理是通过SQL Server完成的,这通常涉及到使用JDBC(Java Database ...

    soap协议请求与分析.rar_ Soap_SOAP java_WSDL_java soap_soap

    SOAP(Simple Object Access Protocol)协议是一种轻量级的、基于XML的协议,用于在Web服务中交换结构化和类型化的信息。它允许不同系统间的应用程序通过网络进行通信,不依赖特定的操作系统或编程语言。SOAP协议...

    Java使用SOAP获取webservice实例解析

    ### Java使用SOAP获取WebService实例解析 #### WebService简介 WebService是一种跨编程语言和操作系统平台的、在网络上进行数据交换的一种方式。它使用标准的Internet协议,如HTTP、XML、SOAP等来实现不同系统间的...

    JAVA 调用SAP SOAP webservice.docx

    JAVA 调用 SAP SOAP webservice 详解 在本文中,我们将详细介绍如何使用 JAVA 调用 SAP SOAP webservice,包括配置 SAP 登录信息、创建 java 项目、添加 web 服务客户端、生成 JAVA 类、调用接口等步骤。 配置 SAP...

    基于XML的SOAP_WebService分布式系统架构的研究和实现

    ### 基于XML的SOAP_WebService分布式系统架构的研究和实现 #### 1. 引言 随着互联网技术的发展和企业需求的不断变化,分布式计算技术成为了解决跨地域、跨平台通信问题的重要手段。传统的分布式计算解决方案如DCOM...

    SayHelloClient2.rar_SayHello webservice_java webservice_service

    标签中的“java_webservice”和“service_webservice”强调了这是基于Java的Web服务实现,而“web_service_”和“webservice”则指代Web服务本身。标签“sayhello__webservice”可能是对Web服务功能的简要概括。 在...

    java+soap+webservice 调用模拟

    通过阅读提供的"java-soap-webservice"文档,你可以进一步了解具体的实现步骤,包括如何设置项目、配置JAX-WS、生成客户端代码、编写调用服务的代码,以及如何解析响应。实践中,不断动手操作和调试是掌握这一技术的...

    基于zend框架下实现的webservice soap用户中心服务源码

    本源码是基于zend框架实现的webservice soap,用户中心,可实现同步注册,同步获取用户信息,不限于语言

    java代码-使用java解决http请求SOAP webService接口的源代码

    java代码-使用java解决http请求SOAP webService接口的源代码 ——学习参考资料:仅用于个人学习使用!

    Soap WebService 调试工具

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方式,而SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于交换结构化的、机器可读的数据。SOAP WebService调试工具是开发人员用来测试、验证和...

    SOAP_serialization.zip_Csharp SOAP_soap_soap C++_soap csharp

    8. **SOAP C++支持**:虽然C++不是.NET平台的原生语言,但也有库如gSOAP允许在C++中实现SOAP通信。gSOAP工具集可以自动生成客户端和服务端代码,简化SOAP消息的序列化和反序列化。 9. **SOAP_csharp**:在C#中,...

    soap(java).rar_DEMO_soap java

    SOAP(Simple Object Access Protocol)是一种基于XML的网络通信协议,用于在不同的应用程序之间交换结构化信息。它允许服务提供者和服务消费者通过HTTP等传输协议进行通信。本DEMO主要展示了如何在Java环境中使用...

    java_soap学习资料

    通过深入学习这些Java SOAP知识点,开发者能够有效地构建和使用SOAP Web服务,进行分布式系统的集成和通信。提供的学习资料应该包含了示例代码、教程文档以及可能的案例研究,帮助你更好地理解和应用这些概念。在...

    CppSoapClient_demo.rar_C++ webservice_DEMO_c++ webservice_webse

    在IT行业中,C++是一种强大的编程语言,常用于开发高性能的应用程序,包括系统软件、游戏引擎、财务和工程软件等。而Web服务则是一种通过HTTP协议进行通信的技术,允许不同系统之间的数据交换。当我们需要在C++应用...

    webService入门教程_java_webservice_

    【描述】:本教程旨在引导初学者了解如何使用Eclipse集成开发环境来发布基于Java语言的WebServices服务。WebServices是一种允许不同系统之间进行交互和数据交换的技术,它使用开放标准如SOAP(简单对象访问协议)和...

Global site tag (gtag.js) - Google Analytics