使用PHPRpc实现Java和PHP通信

PHPRPC是一款不错的是轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误处理的、支持会话的、面向服务的高性能远程过程调用协议。官方网址为http://www.phprpc.org/zh_CN/

本文以Java作为服务器端,PHP作为客户端来作为演示。

1、先书写Java服务器端,书写一个接口。如下:

package org.huashui.server;

public interface UserManager {
	//增加一个用户名
	public void add(String name);
	//获取用户名
	public String getName();
	//长数据测试
	public String getLongString();
	//长数据测试2
	public byte[] getLongByte();

}

书写实现类

package org.huashui.server.impl;

import org.huashui.server.UserManager;

public class UserManagerImpl implements UserManager {

	private String name;

	public void add(String name) {
		this.name = name;
		System.out.println("我爱你," + name);

	}

	public String getName() {

		return "我也爱你";
	}

	public String getLongString() {
		StringBuffer sb = new StringBuffer();

		return sb.toString();
	}

	public byte[] getLongByte() {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < 40000; i++) {
			sb
					.append(
							i
									+ "insert into passport_members(username, password, email, regdate, salt, totalpoint, pid) values ('huashui','12312312312312','123@yahoo.com.cn','0','','0','123');")
					.append("n");
		}
		return sb.toString().getBytes();

	}

}

书写供远程调用的server.jsp

< %@ page language="java"  pageEncoding="ISO-8859-1"%>

< %@ page import="org.phprpc.PHPRPC_Server"%>
< %@ page import="org.huashui.server.UserManager"%>

< %@page import="org.huashui.server.impl.UserManagerImpl;"%>

< %

PHPRPC_Server phprpc_server = new PHPRPC_Server();
UserManager um;

um= new UserManagerImpl();
phprpc_server.add(um);
phprpc_server.start(request,response);
%>

至此,服务器端完成。
客户端

header("Content-type:text/plain;charset=GB2312");
include ("php/phprpc_client.php");
$client = new PHPRPC_Client();
$client->useService('http://localhost:8080/phprpc/server.jsp");
$client->setCharset('GB2312');
$client->setKeyLength(128);
$client->setEncryptMode(3);
$client->add("huashui");

相关日志

  • jqGrid进阶教程:3、jqGrid的数据格式化二
    jqGrid是非常强大的,除了上一讲提到的预置的格式化外,还提供自定义的格式化方法,这种方法也是我比较喜欢的方法。 我们接上面的例子 $("#grid_id").jqGrid({ ... colModel : [ {name:'sex', edittype:'select', editoptions:{value:"1:男;2:女"}} ... ], ... }); ...
  • jqGrid例子文件下载
    最近慵懒了很多,很少来上面博一博,发下jqGrid的例子的全部文件。 jqGrid 由于文件太大,删掉了所有的jar包,jar是整合struts2.1+spring2.5+hibernate3.2...
  • jqGrid进阶教程:1、jqGrid的样式无法正确显示的原因和解决办法
    jqGrid引入后,执行,常常会碰到css无法像官方的demo一样正常显示,特别是字体还有一些弹出框, 例如 [caption id="attachment_407" align="alignnone" width="300" caption="CSS变样"][/caption] 这种问题的原因多半是因为html的标准问题,即其写法为 如果要让样式正常,要采用写法如下 ...
  • jqGrid基础学习:11jqGrid的查询时和后台的交互
    jqGrid查询时和后台交互是一个比较棘手的问题,因为发送过来的数据不规则。 单字段 我们通过Firefox的firebug来进行调试,我们发现提交搜索请求后,向后台发送的参数如下 [caption id="attachment_382" align="alignnone" width="300" caption="单字段同后台交互"][/caption] 由此,我们看出单字段查询...
  • jqGrid基础学习:10jqGrid的多字段查询
    多字段查询就是高级查询,在jqGrid中,高级查询的麻烦在于同后台的交互。 [caption id="attachment_379" align="alignnone" width="718" caption="jqGrid多字段查询"][/caption] 启用多条件查询的方法,是加上.searchGrid({multipleSearch:true}); 即可。 ...

PO一下