`
wwwzhouhui
  • 浏览: 358740 次
  • 性别: 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,也不知道怎么配置可以实现。目前还没有发现怎么弄,有朋友弄出来麻烦告诉 呵呵
分享到:
评论

相关推荐

    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...

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

    JsonRpcBundle是Symfony的一个捆绑包,它允许使用轻松构建用于Web服务的JSON-RPC服务器。 该捆绑软件包含一个控制器,该控制器能够将在Symfony服务容器中注册为JSON-RPC 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-...

    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 ...

    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客户端...

    一个轻量级PHP开源接口框架,配套运营管理平台,专注于接口服务开发

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

    PhalApi简称框架一个轻量级PHP开源接口框架专注于接口服务开发

    一个轻量级PHP开源接口框架,专注于接口服务开发,支持HTTP/SOAP/RPC协议,拥有自动生成的在线文档、多种开发语言的客户端SDK包以及可重用的扩展类库,可用于快速搭建微服务、RESTful接口或Web Services。...

    PhalApi-master-2x.zip

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

    PhalApi开源接口框架 v2.17.1

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

    PhalApi开源接口框架-PHP

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

    火柴人java源码-easySell:易卖

    支持HTTP、SOAP和RPC协议,可用于快速搭建微服务、RESTful接口或Web Services PhalApi代码开源、产品开源、思想开源,请放心使用。更多请访问。再次感谢开源中国、各位贡献者和同学。 RELATED: 。 导读 本文内容主要...

    火柴人java源码-api:接口

    支持HTTP、SOAP和RPC协议,可用于快速搭建微服务、RESTful接口或Web Services PhalApi代码开源、产品开源、思想开源,请放心使用。更多请访问。再次感谢开源中国、各位贡献者和同学。 RELATED: 。 导读 本文内容主要...

    火柴人java源码-wx_house-front:房产中介系统-微信端

    支持HTTP、SOAP和RPC协议,可用于快速搭建微服务、RESTful接口或Web Services PhalApi代码开源、产品开源、思想开源,请放心使用。更多请访问。再次感谢开源中国、各位贡献者和同学。 RELATED: 。 导读 本文内容主要...

    火柴人java源码-myphalapi:米法拉皮

    支持HTTP、SOAP和RPC协议,可用于快速搭建微服务、RESTful接口或Web Services PhalApi代码开源、产品开源、思想开源,请放心使用。更多请访问。再次感谢开源中国、各位贡献者和同学。 RELATED: 。 导读 本文内容主要...

    火柴人java源码-PizzaExpress-api:比萨

    支持HTTP、SOAP和RPC协议,可用于快速搭建微服务、RESTful接口或Web Services PhalApi代码开源、产品开源、思想开源,请放心使用。更多请访问。再次感谢开源中国、各位贡献者和同学。 RELATED: 。 PhalApi创新项目 ...

    火柴人java源码-LibraryAPI:图书馆室内导航系统的API组件

    支持HTTP、SOAP和RPC协议,可用于快速搭建微服务、RESTful接口或Web Services PhalApi代码开源、产品开源、思想开源,请放心使用。更多请访问。再次感谢开源中国、各位贡献者和同学。 ###导读 本文内容主要分为三...

    火柴人java源码-PhalApi-Core:PhalApiV2核心

    支持HTTP、SOAP和RPC协议,可用于快速搭建微服务、RESTful接口或Web Services PhalApi代码开源、产品开源、思想开源,请放心使用。更多请访问。再次感谢开源中国、各位贡献者和同学。 ###导读 本文内容主要分为三...

    php.ini-development

    The web server's directory (for SAPI modules), or directory of PHP ; (otherwise in Windows) ; 6. The directory from the --with-config-file-path compile time option, or the ; Windows directory (C:\...

    WordPress 宝典.pdf

    Appendix E: WordPress Vendors and Professional Services Top Consultants in the WordPress Community Directory of Automattic-Recommended Consultants Summary Appendix F: WordPress in Government WordPress...

Global site tag (gtag.js) - Google Analytics