最近学习了一下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》是一本关于基于XML-RPC技术进行Web服务编程的书籍。该书由Simon St. Laurent、Joe Johnston和Edd Dumbill合著,并于2001年6月由O'Reilly出版社出版。本书共有230页,...
《Programming Web Services with XML RPC》一书不仅涵盖了XML-RPC的基本概念和技术细节,还深入探讨了在不同编程环境(如Java、Perl、PHP、Python和ASP)下如何有效地使用XML-RPC。对于任何希望了解并应用XML-RPC来...
2. **数据交换**:当需要在PHP Web前端和.NET后端数据库之间进行大量数据交互时,PHPRPC提供了高效的传输机制。 3. **微服务通信**:在微服务架构中,各服务可能使用不同语言编写,PHPRPC作为跨语言的RPC框架,有助...
### Sakai Webservices 使用方式详解 #### 一、Sakai Webservices 概述 Sakai作为一款广泛应用于高等教育机构的开源课程管理系统,以其优秀的架构设计、良好的解耦性、扩展性和稳定性而著称。这使得Sakai不仅在...
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...
以下将详细讲解如何利用nusoap生成Webservices,以及服务器端和客户端的具体实现。 一、什么是Webservices? Webservices是一种基于互联网的、能够互相交换数据的服务。它们使用开放标准(如XML、SOAP、WSDL和UDDI...
JsonRpcBundle是Symfony的一个捆绑包,它允许使用轻松构建用于Web服务的JSON-RPC服务器。 该捆绑软件包含一个控制器,该控制器能够将在Symfony服务容器中注册为JSON-RPC Web服务的任何公共服务的方法公开。 文献...
3. **可扩展性**:Apache Axis支持JAX-RPC(Java API for XML-RPC)和JAX-WS(Java API for XML Web Services)规范,允许开发者使用各种Web服务标准和模式。此外,它还具有插件机制,可以方便地添加新的数据类型或...
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协议,拥有自动生成的在线文档、多种开发语言的客户端SDK包以及可重用的扩展类库,可用于快速搭建微服务...
WSDL(Web Services Description Language)文件是XML格式,用于描述Web Service接口、操作和消息结构。 2. **Zend Studio for Eclipse**:这是一款强大的PHP集成开发环境,支持Web Service的创建、调试和管理。在...
在PHP5中,可以使用SOAP或XML-RPC库创建和消费Web Services。通过UML设计这些服务,可以确保服务接口的一致性和可维护性。 总的来说,UML2PHP 1.7 结合 Dia 提供了一种强大的方法,让开发人员能够利用UML的强大功能...
该项目是轻量级PHP开源接口框架π框架(派框架)的设计源码,包含...π框架支持HTTP/SOAP/RPC协议,并提供自动生成的在线文档、多种开发语言的SDK包和丰富的扩展类库,适用于快速构建微服务、RESTful接口或Web Services。
goetas-webservices / soap-server PHP实现SOAP 1.1和1.2服务器规范。 优点: 纯PHP,不依赖ext-soap 可扩展(JMS事件侦听器支持) PSR-7 HTTP消息传递 PSR-15 HTTP服务器处理程序 无需在生产中解析WSDL / XSD ...
**Laravel 开发与 Gearman RPC 整合详解** 在现代Web开发中,异步任务处理和分布式计算已经成为提升系统性能的关键技术。Laravel作为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支持多种编程模型,包括Java Message Service (JMS)、Async HTTP Transport、JAX-RPC以及JAX-WS(Java API for XML Web Services)。此外,Axis2还支持多种语言,如Java、C++和PHP。 **新手超详细教程** 提供...
- **WSDL**:Web Services Description Language用于描述Web Service的功能、调用方法、参数及返回值等信息。WSDL文件就像COM编程中的IDL,作为客户端和服务端之间的合同。 3. **WSML(Web Services Meta Language...
8. **Web服务**:Drupal 7支持XML-RPC、RESTful Web Services和Services模块,允许与其他应用程序进行数据交换和集成。 9. **性能优化**:Drupal 7提供了一些内置的性能优化工具,如页面缓存、数据库查询优化、CSS...