hprose rpc使用实例(同时有Java和Delphi客户端的例子)
php server
- <?php
- require_once('src/Hprose.php');
- function hello($name) {
- echo "Hello $name!";
- return "Hello $name!";
- }
- function e() {
- throw new Exception("I am Exception");
- }
- function ee() {
- require("andot");
- }
- function asyncHello($name, $callback) {
- sleep(3);
- $callback("from server,Hello async $name!");
- }
- $server = new HproseHttpServer();
- $server->setErrorTypes(E_ALL);
- $server->setDebugEnabled();
- $server->addFunction('hello');
- $server->addFunctions(array('e', 'ee'));
- $server->addAsyncFunction('asyncHello');
- $server->addFilter(new HproseJSONRPCServiceFilter());
- $server->start();
php client
- <?php
- require_once ('src/Hprose.php');
- $test = new HproseHttpClient("http://localhost/hprose/http_server.php");
- echo '<br/>';
- // var_dump($test->invoke("hello", $args, 0, HproseResultMode::Serialized, 0));
- echo '<br/>';
- // var_dump($test->invoke("hello", $args, 0, HproseResultMode::Raw, 0));
- echo '<br/>';
- // var_dump($test->invoke("hello", $args, 0, HproseResultMode::RawWithEndTag, 0));
- echo $test->asyncHello("WORLD");
- echo '<br/>';
- $test->asyncHello("WORLD", function ($result)
- {
- echo "from client result: ";
- var_dump($result);
- });
- echo '<br/>';
- /*
- $test->dnslookup("www.baidu.com", function($result, $args) {
- echo "result: ";
- var_dump($result);
- echo "args: ";
- var_dump($args);
- });
- */
- ?>
java client
- package hprose.hello.client;
- import hprose.client.HproseHttpClient;
- import java.io.IOException;
- public class HelloClient {
- public static void main(String[] args) throws IOException {
- HproseHttpClient client = new HproseHttpClient();
- client.useService("http://10.0.0.100:9090/hprose_demo/Hello");
- String result = (String) client.invoke("sayHello", new Object[] { "Hprose" });
- System.out.println(result);
- result = (String) client.invoke("sayHello", new Object[] { "中国" });
- System.out.println(result);
- System.out.println(client.invoke("add",new Object[]{115,316}));
- }
- }
- package hprose.hello.client;
- import java.io.IOException;
- import hprose.client.HproseHttpClient;
- public class TestPHPClient {
- public static void main(String[] args) throws Exception {
- HproseHttpClient client = new HproseHttpClient();
- client.useService("http://10.0.0.105/hprose/http_server.php");
- String result = (String) client.invoke("hello",
- new Object[] { "Hprose来自Java客户端" });
- System.out.println(result);
- System.out.println(client.invoke("asyncHello",new Object[] { "Hprose来自Java客户端"}));
- }
- }
delphi client:
- unit Unit4;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, HproseHttpClient, HproseClient;
- type
- TForm4 = class(TForm)
- Button1: TButton;
- HproseHttpClient1: THproseHttpClient;
- Button2: TButton;
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form4: TForm4;
- implementation
- {$R *.dfm}
- procedure TForm4.Button1Click(Sender: TObject);
- begin
- HproseHttpClient1.UseService('http://10.0.0.100:9090/hprose_demo/Hello');
- ShowMessage(HproseHttpClient1.Invoke('sayHello', ['World中文']));
- ShowMessage(HproseHttpClient1.Invoke('add', [15,63]));
- end;
- //https://raw.githubusercontent.com/andot/hprose/master/doc/1.3/docx/pascal.docx
- procedure TForm4.Button2Click(Sender: TObject);
- begin
- HproseHttpClient1.UseService('http://10.0.0.105/hprose/http_server.php');
- ShowMessage(HproseHttpClient1.Invoke('hello', ['World时间']));
- ShowMessage(HproseHttpClient1.Invoke('asyncHello', ['xxx']));
- end;
- end.
源码工程:http://pan.baidu.com/s/1o6vF1qE
http://blog.csdn.net/earbao/article/details/46501671
hprose rpc使用实例(同时有Java和Delphi客户端的例子)的更多相关文章
- phprpc 使用实例(同时有Java、Android和Delphi客户端的例子)
PHPRPC 是一个轻型的.安全的.跨网际的.跨语言的.跨平台的.跨环境的.跨域的.支持复杂对象传输的.支持引用参数传递的.支持内容输出重定向的.支持分级错误处理的.支持会话的.面向服务的高性能远程过 ...
- 3 weekend110的hadoop中的RPC框架实现机制 + hadoop中的RPC应用实例demo
hadoop中的RPC框架实现机制 RPC是Remotr Process Call, 进程间的远程过程调用,不是在一个jvm里. 即,Controller拿不到Service的实例对象. hadoop ...
- 性能工具之Jmeter压测Hprose RPC服务
概述 Hprose(High Performance Remote Object Service Engine),国人开发的一个远程方法调用的开源框架.它是一个先进的轻量级的跨语言跨平台面向对象的高性 ...
- 梯度迭代树(GBDT)算法原理及Spark MLlib调用实例(Scala/Java/python)
梯度迭代树(GBDT)算法原理及Spark MLlib调用实例(Scala/Java/python) http://blog.csdn.net/liulingyuan6/article/details ...
- Java-Runoob-高级教程-实例-环境设置实例:4.Java 实例 – 如何查看当前 Java 运行的版本?
ylbtech-Java-Runoob-高级教程-实例-环境设置实例:4.Java 实例 – 如何查看当前 Java 运行的版本? 1.返回顶部 1. Java 实例 - 如何查看当前 Java 运行 ...
- Java-Runoob-高级教程-实例-环境设置实例:3.Java 实例 - 如何执行指定class文件目录(classpath)?
ylbtech-Java-Runoob-高级教程-实例-环境设置实例:3.Java 实例 - 如何执行指定class文件目录(classpath)? 1.返回顶部 1. Java 实例 - 如何执行指 ...
- Java-Runoob-高级教程-实例-环境设置实例:2.Java 实例 – Java 如何运行一个编译过的类文件?
ylbtech-Java-Runoob-高级教程-实例-环境设置实例:2.Java 实例 – Java 如何运行一个编译过的类文件? 1.返回顶部 1. Java 实例 - 如何执行编译过 Java ...
- Java-Runoob-高级教程-实例-环境设置实例:1.Java 实例 – 如何编译一个Java 文件?
ylbtech-Java-Runoob-高级教程-实例-环境设置实例:1.Java 实例 – 如何编译一个Java 文件? 1.返回顶部 1. Java 实例 - 如何编译 Java 文件 Java ...
- 实例详解 Java 死锁与破解死锁
锁和被保护资源之间的关系 我们把一段需要互斥执行的代码称为临界区.线程在进入临界区之前,首先尝试加锁 lock(),如果成功,则进入临界区,此时我们称这个线程持有锁:否则呢就等待,直到持有锁的线程解锁 ...
随机推荐
- Windows Azure 网站的 IP 和域限制
编辑人员注释:本文章由 Windows Azure 网站团队的首席项目经理 Stefan Schackow 撰写. 配置 Azure 网站 (WAWS) 的 IP 和域限制一直是用户最迫切希望我们提供 ...
- poj 1155 TELE (树形背包dp)
本文出自 http://blog.csdn.net/shuangde800 题目链接: poj-1155 题意 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构, ...
- HTTP的请求头标签If-Modified-Since
一直以来没有留意过HTTP请求头的IMS(If-Modified-Since)标签. 最近在分析Squid的access.log日志文件时,发现了一个现象. 就是即使是对同一个文件进行HTTP请求,第 ...
- ajax跨域请求--jsonp实例
ajax请求代码: //区域事件选择配送点 function changeDistrict(value){ if(value == 0){ $('#transport_node').empty(); ...
- Session 转台服务器的使用方法
Session的缺陷:为了保持自身的稳定,IIS在访问量大的时候,可能会不自觉的重启,这时候Session就会丢失用户就会被迫下线 解决方案1:将Session放到一个专门的转台服务器上 方案2:将S ...
- WCF技术剖析之十七:消息(Message)详解(下篇)
原文:WCF技术剖析之十七:消息(Message)详解(下篇) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话)]]< ...
- premake Ubuntu下的安装
premake是个跨平台的编译工具,先看看在Ubuntu下怎么安装. 首先下载,在/usr目录下: sudo wget -O premake-4.4-beta4-linux.tar.gz http:/ ...
- perl学习(10) 字符串处理函数和排序
1.1.index Perl 查找子串第一次在大字符串中出现的地方,返回第一个字符的位置. . . my $stuff = “Howordy world!”; my $where3 = index($ ...
- Android 调整屏幕分辩率
Android 可设置为随着窗口大小调整缩放比例及设定fixed的窗口大小. 对于surface的控制在SurfaceHolder类中进行 而Android 屏幕分辩率中已经有一个类DisplayMe ...
- cocos2d-x 实现clash of clans多点聚焦缩放场景
猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=434 都是以前写的一些效果,整理 ...