09年智手各组组长,组员重新招募中 发贴得礼品有实物,有金币和道具 重新招募09年各版版主 每月获奖名单
新人报到加分贴 对我们的意见告诉这里 新增奖品及奖励办法 广告招商
返回列表 回复 发帖

用 PHPRPC 开发 Android 应用程序

用 PHPRPC 开发 Android 应用程序用 PHPRPC 开发 Android 应用程序Google 出来 Android 已经有一段时间了,昨天晚上下来玩了一下,还不错,不过找到一些 Android 上的 Java bug,其中最大的一个是 java.lang.reflect.Proxy 的 bug,它的 newProxyInstance 方法和 getProxyClass 方法,不论带入的 interfaces 是否是空,都会抛出 NullPointerException 错误,同样的调用方式在 PC 的 JDK 1.4、1.5 和 6.0 就完全正常。这个 bug 昨天提交到 Android 的讨论组了,不过他们什么时候能够修正这个 bug 就不知道了。当然,因为这个原因,PHPRPC 在开发 Android 应用程序时,暂时无法使用定义代理类接口,并通过代理类进行远程调用。但是仍然可以通过 PHPRPC_Client 对象的 invoke 方法来进行远程调用,下面是实例代码:
package
com.google.android.hello;

import
org.phprpc.PHPRPC_Client;
import
org.phprpc.util.Cast;

import
android.app.Activity;
import
android.os.Bundle;
import
android.widget.TextView;

public
class
HelloPHPRPC
extends
Activity
{
    @
Override
public
void
onCreate(Bundle
icicle)
{
super.onCreate(icicle);
        
PHPRPC_Client
client = new
PHPRPC_Client("http://www.phprpc.org/server.php");
        
client.setEncryptMode(2);
/*
        TextView tv1 = new TextView(this);
        tv1.setText(client.invoke("add", new Object[] { 1, 2 }).toString());
        setContentView(tv1);
*/

TextView
tv2 = new
TextView(this);
        
tv2.setText(Cast.toString(client.invoke("hello", new
Object[]
{"PHPRPC"})));
        
setContentView(tv2);
   
}
}

下面是一个例子运行截图:

上面注释掉的语句也是可以正常执行的,注释掉是因为后面的执行会覆盖前面执行的结果。invoke 方式进行远程调用,只有一点需要注意,就是返回结果如果是字符串,那么需要用 Cast.toString 转化为字符串,因为字符串默认反序列化为字节数组,如果是其它类型,需要用 Cast.cast 方法来转成相应的类型,否则可能跟你预期的类型可能不一致,因为默认会返回最接近返回值的相容类型。
有了上面的例子和讲解,我想大家用 PHPRPC 来开发 Android 应用程序就没有什么问题了!
http://www.wmtxt.com手机小说下载
返回列表