`
wwwzhouhui
  • 浏览: 361129 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

webservices学习之phprpc

阅读更多
最近学习了一下phprpc。现讲学习经历和部分代码写下来
 
1.下载
   去http://www.phprpc.org/zh_CN/download/ 下载phprpc_3.0.2_java.zip
解压压缩包,执行make.bat 当前文件夹会生成phprpc.jar,phprpc_client.jar,
phprpc_spring.jar 这3个JAR
2.ECLIPSE 建立WEB工程
  将3个JAR复制到LIB包中
3.编写代码
   服务端
   调用接口IBasic.java
package com.phprpc;

import java.util.List;
import java.util.Map;

/***********************************************************************   
 *   
 *   IBasic.java     
 *   @copyright       Copyright:   2009-2012     
 *   @creator         周辉<br/>   
 *   @create-time   May 21, 2009   3:38:06 PM   
 *   @revision         $Id:     *   
 ***********************************************************************/
public interface IBasic {
	 /**   
     * 测试字符串   
     * @return   
     */   
    public String hello();    
   
    /**   
     * 取一辆汽车   测试对象传递   
     * @return   
     */   
    public Car getCar();    
    /**
     *   取得list 数据
     * @return
     */
    public List<String> getList();
    
    /**
     * 取得map 数据
     * @return
     */
    public Map<String,String> getMap();
    
    /**
     *  保存数据
     * @param map
     */
    public void setMap(Map<String,Car> map);
    
    /**
	 * 保存数据
	 * 
	 * @param List
	 */
	public void setList(List<Car> list);
	

}


  接口的实现类 BasicService.java
package com.phprpc;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/*******************************************************************************
 * 
 * BasicService.java
 * 
 * @copyright Copyright: 2009-2012
 * @creator 周辉<br/>
 * @create-time May 21, 2009 3:39:21 PM
 * @revision $Id: *
 ******************************************************************************/
public class BasicService implements IBasic {
	/**
	 * 取一辆汽车 测试对象传递
	 * 
	 * @return
	 */
	public Car getCar() {
		Car car = new Car();
		car.setColor("RED红色");
		car.setLength("2400");
		car.setName("HAHACHE");
		return car;
	}

	/**
	 * 测试字符串
	 * 
	 * @return
	 */
	public String hello() {
		return "hello zhouhui";
	}

	/**
	 * 取得list 数据
	 * 
	 * @return
	 */
	public List<String> getList() {
		List<String> list = new ArrayList<String>();
		list.add("1");
		list.add("2");
		list.add("3");
		return list;
	}

	/**
	 * 取得map 数据
	 * 
	 * @return
	 */
	public Map<String, String> getMap() {
		Map<String, String> map = new HashMap<String, String>();
		if (map.isEmpty()) {
			map.put("1", "zhouhui1");
			map.put("2", "zhouhui2");
			map.put("3", "zhouhui3");
		}
		return map;
	}

	/**
	 * 保存数据
	 * 
	 * @param map
	 */
	public void setMap(Map<String, Car> map) {
		for (Map.Entry<String, Car> item : map.entrySet()) {
			System.out.println("mapkey: " + item.getKey());
			System.out.println("mapvalue: " + item.getValue().getColor());
			System.out.println("mapvalue: " + item.getValue().getName());
		}
	}
	
	/**
	 * 保存数据
	 * 
	 * @param List
	 */
	public void setList(List<Car> list) {
		for (Car s :list){
       	 System.out.println("Color: " + s.getColor());
       	System.out.println("Length: " + s.getLength());
       	System.out.println("Name: " + s.getName());    
       }
	}

}

   传递客户端和服务器端自定义对象Car.java
package com.phprpc;
import java.io.Serializable;
/***********************************************************************   
 *   
 *   Car.java     
 *   @copyright       Copyright:   2009-2012     
 *   @creator         周辉<br/>   
 *   @create-time   May 21, 2009   3:38:21 PM   
 *   @revision         $Id:     *   
 ***********************************************************************/
public class Car implements Serializable {
	private String color;
	private String length;
	private String name;
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public String getLength() {
		return length;
	}
	public void setLength(String length) {
		this.length = length;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}


  服务器发布代码,PHPRPC 很奇怪服务端代码是个JSP 当然也可以编写一个serverlet
下面将jsp 代码贴上 index2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.phprpc.*" %>   
<%@ page import="org.phprpc.*" %>   
<%   
IBasic hello = new BasicService();   
PHPRPC_Server phprpc_server = new PHPRPC_Server();   
phprpc_server.add("hello",hello);   
phprpc_server.add("getCar",hello);   
phprpc_server.add("getList",hello); 
phprpc_server.add("getMap",hello); 
phprpc_server.add("setMap",hello); 
phprpc_server.add("setList",hello);
phprpc_server.start(request, response);   
%> 

  客户端测试代码 testClient.java
package com.phprpc;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.phprpc.PHPRPC_Client;


/***********************************************************************   
 *   
 *   testClient.java     
 *   @copyright       Copyright:   2009-2012     
 *   @creator         周辉<br/>   
 *   @create-time   Mar 31, 2009   3:15:08 PM   
 *   @revision         $Id:     *   
 ***********************************************************************/
public class testClient {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		PHPRPC_Client client = new PHPRPC_Client("http://localhost:8083/testPhPRpc/index2.jsp");   
		IBasic basic = (IBasic) client.useService(IBasic.class); 
		   Car car   = basic.getCar(); 
	       // 客户端调用服务端list 数据
//	        List<String> list =basic.getList();
//	        for (String s :list){
//	        	 System.out.println("list: " + s);    
//	        }
	        System.out.println("Hello: " + basic.hello());    
	        System.out.println("Hello: " + car.getName()); 
////	        // 客户端调用服务端MAP 数据
//	        Map<String,String> map =basic.getMap();
//	        for(Map.Entry<String,String> item:map.entrySet()){
//	        	System.out.println("mapkey: " +item.getKey()); 
//	        	System.out.println("mapvalue: " +item.getValue());    
//	        }
	        // 客户端向服务端发送数据
	        Map<String,Car> map2 = new HashMap<String,Car>();
	        if(map2.isEmpty()){
	        	Car c = new Car();
	        	c.setColor("red");
	        	c.setLength("111");
	        	c.setName("zhouhui");
	        	map2.put("1", c);
	        	map2.put("2", c);
	        	map2.put("3", c);
	        }
	        basic.setMap(map2);  
	        //客户端向服务端发送数据 list
	        List<Car> List = new ArrayList<Car>();
	        for (int i=0;i<3;i++){
	        	Car c = new Car();
	        	c.setColor("red");
	        	c.setLength(String.valueOf(i));
	        	c.setName("zhouhui");
	        	List.add(c);
	        }
	        basic.setList(List);
	}

}

4.发布程序测试
  直接发布WEB功能到TOMCAT 中.WEB.xml也不需要修改了(因为用JSP 做发布服务每有写serverlet)
5.测试结果
  客户端发送数据 服务端接收到数据
6.后续
  在测试代码中客户端调用服务端list 数据和客户端调用服务端MAP 数据 测试会不成功
PHPrcp 序列化字节数组不识别list 和MAP,也不知道怎么配置可以实现。目前还没有发现怎么弄,有朋友弄出来麻烦告诉 呵呵
分享到:
评论

相关推荐

    2001_Programming Web Services with XML-RPC

    《2001_Programming Web Services with XML-RPC》是一本关于基于XML-RPC技术进行Web服务编程的书籍。该书由Simon St. Laurent、Joe Johnston和Edd Dumbill合著,并于2001年6月由O'Reilly出版社出版。本书共有230页,...

    programming web services with xml rpc

    《Programming Web Services with XML RPC》一书不仅涵盖了XML-RPC的基本概念和技术细节,还深入探讨了在不同编程环境(如Java、Perl、PHP、Python和ASP)下如何有效地使用XML-RPC。对于任何希望了解并应用XML-RPC来...

    PHPRPC .Net服务端+客户端

    2. **数据交换**:当需要在PHP Web前端和.NET后端数据库之间进行大量数据交互时,PHPRPC提供了高效的传输机制。 3. **微服务通信**:在微服务架构中,各服务可能使用不同语言编写,PHPRPC作为跨语言的RPC框架,有助...

    sakai webservices 使用方式

    ### Sakai Webservices 使用方式详解 #### 一、Sakai Webservices 概述 Sakai作为一款广泛应用于高等教育机构的开源课程管理系统,以其优秀的架构设计、良好的解耦性、扩展性和稳定性而著称。这使得Sakai不仅在...

    PHP.Web.Services.APIs.for.the.Modern.Web.2nd.Edition

    this practical book provides everything you need to build web service APIs with PHP. Author Lorna Jane Mitchell uses code samples, real-world examples, and advice based on her extensive experience to...

    php 利用 nusoap 生成 webservices

    以下将详细讲解如何利用nusoap生成Webservices,以及服务器端和客户端的具体实现。 一、什么是Webservices? Webservices是一种基于互联网的、能够互相交换数据的服务。它们使用开放标准(如XML、SOAP、WSDL和UDDI...

    jsonrpc-bundle:Symfony的JSON-RPC服务器:将在服务容器中注册的服务公开为JSON-RPC-webservices

    JsonRpcBundle是Symfony的一个捆绑包,它允许使用轻松构建用于Web服务的JSON-RPC服务器。 该捆绑软件包含一个控制器,该控制器能够将在Symfony服务容器中注册为JSON-RPC Web服务的任何公共服务的方法公开。 文献...

    Web服务框架 Apache Axis

    3. **可扩展性**:Apache Axis支持JAX-RPC(Java API for XML-RPC)和JAX-WS(Java API for XML Web Services)规范,允许开发者使用各种Web服务标准和模式。此外,它还具有插件机制,可以方便地添加新的数据类型或...

    PHP Web 2.0 Mashup Projects.pdf

    we cover two basic web services to get our feet wet — XML-RPC and REST. The Internet UPC database is an XML-RPC-based service, while Amazon uses REST. Preface [ 2 ] We will create code to call XML-...

    一个轻量级PHP开源接口框架,配套运营管理平台,专注于接口服务开发,支持HTTP/SOAP/RPC协议

    一个轻量级PHP开源接口框架,简称π框架(派框架),配套运营管理平台,专注于接口服务开发,支持HTTP/SOAP/RPC协议,拥有自动生成的在线文档、多种开发语言的客户端SDK包以及可重用的扩展类库,可用于快速搭建微服务...

    利用Zend Studio for Eclipse生成wsdl文件,php调用web service

    WSDL(Web Services Description Language)文件是XML格式,用于描述Web Service接口、操作和消息结构。 2. **Zend Studio for Eclipse**:这是一款强大的PHP集成开发环境,支持Web Service的创建、调试和管理。在...

    UML2PHP 1.7(Dia插件)

    在PHP5中,可以使用SOAP或XML-RPC库创建和消费Web Services。通过UML设计这些服务,可以确保服务接口的一致性和可维护性。 总的来说,UML2PHP 1.7 结合 Dia 提供了一种强大的方法,让开发人员能够利用UML的强大功能...

    基于PHP的轻量级开源接口框架PhalApi设计源码

    该项目是轻量级PHP开源接口框架π框架(派框架)的设计源码,包含...π框架支持HTTP/SOAP/RPC协议,并提供自动生成的在线文档、多种开发语言的SDK包和丰富的扩展类库,适用于快速构建微服务、RESTful接口或Web Services。

    soap-server:SOAP 1.1和1.2服务器的纯PHP实现

    goetas-webservices / soap-server PHP实现SOAP 1.1和1.2服务器规范。 优点: 纯PHP,不依赖ext-soap 可扩展(JMS事件侦听器支持) PSR-7 HTTP消息传递 PSR-15 HTTP服务器处理程序 无需在生产中解析WSDL / XSD ...

    Laravel开发-laravel-gearman-rpc

    **Laravel 开发与 Gearman RPC 整合详解** 在现代Web开发中,异步任务处理和分布式计算已经成为提升系统性能的关键技术。Laravel作为PHP的流行框架,提供了丰富的工具来支持这类需求。本篇文章将深入探讨如何在...

    SOAP 1.1和1.2客户端规范PHP实现-PHP开发

    goetas-webservices / soap-client SOAP 1.1和1.2客户端规范PHP实现。 优点:纯PHP,不依赖于ext-soap可扩展(JMS事件侦听器支持)PSR-7 HTTP消息传递goetas-webservices / soap-client PHP实现SOAP 1.1和1.2客户端...

    axis2之webservice

    Axis2支持多种编程模型,包括Java Message Service (JMS)、Async HTTP Transport、JAX-RPC以及JAX-WS(Java API for XML Web Services)。此外,Axis2还支持多种语言,如Java、C++和PHP。 **新手超详细教程** 提供...

    WebService调用技术文档.doc

    - **WSDL**:Web Services Description Language用于描述Web Service的功能、调用方法、参数及返回值等信息。WSDL文件就像COM编程中的IDL,作为客户端和服务端之间的合同。 3. **WSML(Web Services Meta Language...

    PHP实例开发源码—Drupal PHP内容管理系统 v7.zip

    8. **Web服务**:Drupal 7支持XML-RPC、RESTful Web Services和Services模块,允许与其他应用程序进行数据交换和集成。 9. **性能优化**:Drupal 7提供了一些内置的性能优化工具,如页面缓存、数据库查询优化、CSS...

Global site tag (gtag.js) - Google Analytics