- 浏览: 50965 次
- 性别:
- 来自: 天津
最近访客 更多访客>>
文章分类
最新评论
-
HenryYu:
是字符编码搞错了
XXTEA 加密算法的 Java 实现 -
HenryYu:
是用了一下,抛错也,是这样使用的吗?
public stati ...
XXTEA 加密算法的 Java 实现
PHPRPC for ActionScript 的安装
PHPRPC for ActionScript 有两个版本,它们分别是针对 ActionScript 2.0 和 ActionScript 3.0 的。在安装方面,它们基本上没有什么区别,所以这里按开发环境来分别介绍。
Flash 8 到 Flash CS3 的安装方法
首先确认你已经安装了相应版本的 Extension Manager,然后安装 PHPRPC for ActionScript 2.0 只需要双击 PHPRPC_AS2.mxp 即可完成安装,安装 PHPRPC for ActionScript 3.0 只需要双击 PHPRPC_AS3.mxp 即可完成安装。安装之后可以在组件面板的 Data 组中找到,直接把它拖到你的库中就可以在你的程序中使用了。
Flash CS4 的安装方法
同样首先确认你已经安装了Adobe Extension Manager CS4,一般来说,安装 Flash CS4 时就会一同安装好的。然后安装 PHPRPC for ActionScript 2.0 只需要双击 PHPRPC_AS2_CS4.mxp 即可完成安装,安装 PHPRPC for ActionScript 3.0 只需要双击 PHPRPC_AS3_CS4.mxp 即可完成安装。安装之后可以在组件面板的 Data 组中找到,直接把它拖到你的库中就可以在你的程序中使用了。
Flex Builder 下的安装方法
实际上,在 Flex Builder 下无需安装,只要在你创建程序工程时,将 PHPRPC_AS2.swc 或 PHPRPC_AS3.swc1 添加到库中就可以使用了。
- 根据你的程序使用哪个版本的 ActionScript 来决定包含那个 swc 文件,不要同时包含。
PHPRPC for ActionScript 客户端
PHPRPC for ActionScript 2.0 和 PHPRPC for ActionScript 3.0 用法基本一致,但也有不同之处,先让我们从最基本的开始说起吧。
如何调用 PHPRPC 服务
我们先通过一个简单的例子,来介绍如何调用 PHPRPC 服务。
下面是 ActionScript 2.0 中的调用:
- import org.phprpc.PHPRPC_Error;
- import org.phprpc.PHPRPC_Client;
- var client:PHPRPC_Client = new PHPRPC_Client('http://localhost:8080/index.aspx', ['add', 'sub']);
- client.keyLength = 256;
- client.encryptMode = 2;
- client.add(1, 2, function (result, args, output, warning) {
- trace(result.toString());
- });
- client.sub(1, 2, function (result, args, output, warning) {
- trace(result.toString());
- });
import org.phprpc.PHPRPC_Error; import org.phprpc.PHPRPC_Client; var client:PHPRPC_Client = new PHPRPC_Client('http://localhost:8080/index.aspx', ['add', 'sub']); client.keyLength = 256; client.encryptMode = 2; client.add(1, 2, function (result, args, output, warning) { trace(result.toString()); }); client.sub(1, 2, function (result, args, output, warning) { trace(result.toString()); });
下面是 ActionScript 3.0 中的调用:
- import org.phprpc.PHPRPC_Error;
- import org.phprpc.PHPRPC_Client;
- var client:PHPRPC_Client = new PHPRPC_Client('http://localhost:8080/index.aspx', ['add', 'sub']);
- client.keyLength = 256;
- client.encryptMode = 2;
- client.add(1, 2, function (result:*, args:Array, output:String, warning:PHPRPC_Error):void {
- trace(result.toString());
- });
- client.sub(1, 2, function (result:*, args:Array, output:String, warning:PHPRPC_Error):void {
- trace(result.toString());
- });
import org.phprpc.PHPRPC_Error; import org.phprpc.PHPRPC_Client; var client:PHPRPC_Client = new PHPRPC_Client('http://localhost:8080/index.aspx', ['add', 'sub']); client.keyLength = 256; client.encryptMode = 2; client.add(1, 2, function (result:*, args:Array, output:String, warning:PHPRPC_Error):void { trace(result.toString()); }); client.sub(1, 2, function (result:*, args:Array, output:String, warning:PHPRPC_Error):void { trace(result.toString()); });
大家会发现上面这两段代码唯一不同的地方就是 ActionScript 3.0 版本的回调函数参数类型更明确了,当然这也是语言本身要求的,因此也可以说它们在使用上是没有区别的。
PHPRPC_Client
对象的 keyLength
和 encryptMode
这两个属性是跟加密传输有关的。keyLength
方法用于设置密钥长度。encryptMode
方法用于设置加密模式。上面设置密钥长度、加密模式都是可选项,如果你不需要这些功能,可以直接忽略它们。
PHPRPC 3.0 for ActionScript 客户端与 Java、.NET 客户端不同,它不需要使用
useService
来返回指定接口的远程代理对象,ActionScript 客户端本身就是一个代理对象。所以,上面例子中 client.add
和 client.sub
这两个调用实际上调用的就是远程方法,对于 ActionScript 客户端来说,远程方法名不需要事先声明,但是还是建议像上面那样直接在客户端代码中指定所需要调用的远程方法名,这样可以避免当你使用一个不存在的方法时要到服务器端做检查,而不是在客户端做检查。回调函数有四个参数,你可以认为它们是服务器端方法执行之后返回的内容。
第一个参数
result
是服务器端方法(函数)的返回值,它可以是任意类型。但如果服务器端返回字符串类型的数据的话,一定要用 toString()
方法进行明确转换才能得到正确结果,否则得到的是 ByteArray
类型的数据1。第二个参数
args
是方法调用的参数,如果这个调用是一个引用参数传递的调用,参数也有可能被修改,这时候,你可以通过 args
来获得修改后的参数,关于引用参数传递的调用我们后面会做进一步说明。第三个参数
output
是服务器端输出的内容,它是字符串类型的,无需用 toString()
方法明确转换为字符串。第四个参数
warning
是服务器端发生的警告错误(目前只有 PHP 服务器会产生警告错误),一般只调试过程中可能会用到。通过这个例子,我想你已经可以掌握 PHPRPC for ActionScript 客户端的基本使用方法了。
如何在调用 PHPRPC 服务时,进行引用参数传递?
引用参数传递实际上非常简单,看下面这个例子,首先来看 PHP 的服务器端:
- <?php
- include('phprpc_server.php');
- function inc(&$n) {
- $n++;
- }
- $phprpc_server = new PHPRPC_Server();
- $phprpc_server->add('inc');
- $phprpc_server->start();
- ?>
<?php include('phprpc_server.php'); function inc(&$n) { $n++; } $phprpc_server = new PHPRPC_Server(); $phprpc_server->add('inc'); $phprpc_server->start(); ?>
- import org.phprpc.PHPRPC_Error;
- import org.phprpc.PHPRPC_Client;
- var client:PHPRPC_Client = new PHPRPC_Client('http://localhost/index.php', ['inc']);
- client.inc(1, function (result, args, output, warning) {
- trace(args[0]);
- }, true);
import org.phprpc.PHPRPC_Error; import org.phprpc.PHPRPC_Client; var client:PHPRPC_Client = new PHPRPC_Client('http://localhost/index.php', ['inc']); client.inc(1, function (result, args, output, warning) { trace(args[0]); }, true);
ActionScript 3.0
- import org.phprpc.PHPRPC_Error;
- import org.phprpc.PHPRPC_Client;
- var client:PHPRPC_Client = new PHPRPC_Client('http://localhost/index.php', ['inc']);
- client.inc(1, function (result:*, args:Array, output:String, warning:PHPRPC_Error):void {
- trace(args[0]);
- }, true);
import org.phprpc.PHPRPC_Error; import org.phprpc.PHPRPC_Client; var client:PHPRPC_Client = new PHPRPC_Client('http://localhost/index.php', ['inc']); client.inc(1, function (result:*, args:Array, output:String, warning:PHPRPC_Error):void { trace(args[0]); }, true);
其实很简单,只要在回调函数之后跟一个
true
参数就可以了。这个 true
就是表示启用引用参数传递。如何来得到远程过程执行的错误信息?
PHPRPC 把错误分为两种,一种是致命错误,一种是警告性错误。
当远程过程执行发生致命错误时,远程过程调用的返回值是一个
PHPRPC_Error
类型的对象,它其中包含了远程过程执行时发生的致命错误信息。当远程过程执行发生警告性错误时,你可以通过回调函数的第四个参数
warning
得到警告错误,warning
的值也是 PHPRPC_Error
类型的对象。如果没有发生警告错误,warning 为 null
。 - 包括数组、对象中的字符串类型数据也是一样要用
toString()
明确转换的。
答
PHPRPC for ActionScript 支持 Flash Lite 吗?
支持 Flash Lite 2.0 以上的版本。不过因为 Flash Lite 本身现在还不支持 ActionScript 3.0,所以你只要使用 PHPRPC for ActionScript 2.0 就可以开发 Flash Lite 程序了。PHPRPC for ActionScript 支持 AIR 吗?
支持,不论在 Flash 还是 Flex 中都可以使用 PHPRPC for ActionScript 3.0 开发 AIR 程序。因为 PHPRPC for ActionScript 3.0 功能比 2.0 要完备,可以算是完美支持 AIR 程序开发!PHPRPC for ActionScript 支持传输自定义类型的对象吗?
PHPRPC for ActionScript 3.0 可以完美支持传输自定义类型的对象。PHPRPC for ActionScript 2.0 对于自定义对象作为字典传输,接收自定义对象也按照字典接收,但包含一个 name 属性,其值为该对象的类名。所以,一般情况下,推荐使用 PHPRPC for ActionScript 3.0。除非是做 Flash Lite 开发,否则完全没有必要使用 PHPRPC for ActionScript 2.0。PHPRPC for ActionScript 3.0 如何支持自定义类型的对象?
PHPRPC for ActionScript 3.0 支持动态类和非动态类对象都支持,但是只能传输 public 成员和动态成员,不能传输 private 和 protected 成员1。例如下面这个类:- package {
- public dynamic class Test {
- public var a:String = "Hello";
- protected var b:Boolean = true;
- private var _x:int = 1;
- public function get x() {
- return _x;
- }
- public function set x(value:int) {
- _x = value;
- }
- }
- }
package { public dynamic class Test { public var a:String = "Hello"; protected var b:Boolean = true; private var _x:int = 1; public function get x() { return _x; } public function set x(value:int) { _x = value; } } }只有字段
a
和属性 x
会被传输,b
和 _x
不会被传输。对于属性来说,必须满足可读、可写并且都是 public 的才可以被传输。关于类名的规定与 PHPRPC for Java 类似:将完整名(包名+类名)中的分隔符(
.
和 ::
)全部替换为 _
后,如果得到的名称相同则认为是相同的类。PHPRPC for ActionScript 3.0 支持
__sleep
和 __wakeup
这两个与序列化相关的魔术方法。同样还支持通过实现 org.phprpc.util.Serializable
接口来实现自定义序列化。因为这两个特性跟 PHPRPC for Java 相似,而且很少用到,这里就不再详细讲解,感兴趣的读者可以参见 PHPRPC for Java 相关章节的内容。PHPRPC for ActionScript 支持字符集设置吗?
PHPRPC for ActionScript 2.0 不支持字符集设置,只能用 UTF-8 字符集与服务器通讯。PHPRPC for ActionScript 3.0 支持字符集设置,可以以任何字符集跟服务器通讯。但仍然建议用 UTF-8,因为更通用效率也更高。- 因为 ActionScript 3.0 不支持反射私有和保护成员
官方网站: http://www.phprpc.org/zh_CN/download/
- phprpc_3.0.1_ajs.zip (47.7 KB)
- 下载次数: 1
- phprpc_3.0.1_js.zip (42 KB)
- 下载次数: 2
- phprpc_3.0.1_php.zip (172.8 KB)
- 下载次数: 4
- phprpc_3.0.2_java.zip (2.5 MB)
- 下载次数: 5
发表评论
文章已被作者锁定,不允许评论。
-
URL重写
2009-11-11 12:07 667URL重写 -
PHP 中控制浏览器缓存的方法
2009-11-11 12:05 915<?php //下面的语句设置此页面的过期时间 ... -
XXTEA 加密算法的 JavaScript 和 PHP 实现
2009-11-11 11:54 1450微型加密算法(TEA)及 ... -
运行php socket
2009-11-11 11:25 865cmd c:php\>php.exe -f se ... -
PHP socket函数参考
2009-11-11 11:23 2107这 些Socket函数直接跟互联网的协议进行发送信息。相对于f ... -
PHP socket 网络编程实例
2009-11-11 11:22 2557一开始对socket不太理解,做起东西很模糊,后来做过定位请求 ... -
Socket 基础 php
2009-11-11 11:19 1179在这一章里你将了解到迷人而又让人容易糊涂的套接字(Socket ... -
conn
2009-11-11 10:54 676<?php header("Content-T ... -
PHP SESSION解惑
2009-11-11 10:33 801一、PHP SESSION原理 我们知道,session是在 ... -
PHP获取163、gmail、126等邮箱联系人地址
2009-11-11 10:30 2389最近一直忙于项目上的QQ、MSN、邮箱(目前以实现163、12 ...
相关推荐
phprpc 的delphi调用 一般常用的调用方法 htdocs http://127.0.0.1/ 为WEB根目录 PHPRPC演示 php版本调用 http://127.0.0.1/demo-phpclient.php 调用demo-phpserver.php发布的HelloWorld()方法 demo1 ...
这是一个PHPrpc客户端文件
phprpc for .net 源代码都有,可修改
PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误处理的、支持会话的、面向服务的高性能远程过程调用...
phprpc中文文档,网页版中文文档。谁用谁知道。
phprpc for java 服务器实例
python利用phprpc进行远程调用
phprpc的客户端jar包,没有其他要说的了
很强大的与服务器安全通信的软件。详细参考www.phprpc.net
学习PHPRPC与java交互的例子,是初学者最后的web项目学习实例。
PHPRPC .Net服务端+客户端,里面涉及到个各类的定义。自己发布IIS,服务端和客户端测试成功。
PHPRPC,它的商业版本是Hprose,这里是spring要引入的jar,引入后就可以跟php服务进行rpc的 通信了。
联系web和windows 应用的软件PHPRPC. PHPRPC for Delphi 是针对 Delphi 6 - 2009 原生程序开发版本的。如果你想将 PHPRPC 用于 Delphi.NET,请参见 PHPRPC for .NET 章节的相关内容。 PHPRPC for Delphi 的安装 ...
phprpc_3.0.2_java,webservice
phprpc_3.0.2_delphi_Edit_XE2 For XE2 亲测可用
很简单的远程过程调用支持包, 比web service更简单的体现远程调用
java 反序列化PHP ,java解析php序列化的字符串,工具包和工程实例
各语言之间数据共享交互,RPC协议。亲测可用。
JAVA WEB开发中一个很强大的JAR包!
PHP+JAVA联合开发最好的利器,速度很快,经过测试