为android创建drupal web服务

时间:2011-09-21 07:19:46

标签: android web-services json drupal xml-rpc

在设置xmlrpc时,我一直在努力解决这个问题 我正在使用服务6.2并在网站建设中启用了xmlrpc - >模块

然后我下载了这个库:http://code.google.com/p/android-xmlrpc/

为了保持简单,只是为了查看实现,没有涉及API密钥或会话密钥的安全功能,甚至匿名用户也可以访问this link

以下是我在Android应用程序中使用的代码来获取数据:

XMLRPCClient client = new XMLRPCClient("http://mydomain.com/infra2/drupal-.19/services/xmlrpc");

try{
    Log.d("SUM",""+client.call("node.get",2));
}catch {
    e.printstacktrace();
}

我在这里获得节点2的完整数据,但它不是XML格式。此外,如果我使用以下代码:

Log.d("SUM",""+client.call("node.get",2,"user"));

特别是创建节点2的用户。我收到错误,但在drupal框架中我可以使用这两个参数来过滤内容。

当我使用此链接中建议的BasicNameValuePair时: -

Android, Drupal & DrupalCloud or Android-xmlrpc tutorial?

我得到的输出如下:

{uid=1, body=welcome , data=a:0:{}, type=panel, last_comment_name=, changed=1305012450, panels_node={did=1, pipeline=standard, nid=4, css_id=}, title=Welcome, created=1301322449, name=admin, revision_uid=1, taxonomy=[Ljava.lang.Object;@46378f28, tnid=0, vid=4, comment_count=0, files=[Ljava.lang.Object;@463776d8, status=1, nid=4, moderate=0, format=1, log=, picture=, sticky=0, promote=1, last_comment_timestamp=1301322449, teaser=welcome , revision_timestamp=1305012450, translate=0, language=, comment=0}

是简单的php格式而不是xml

我也尝试过使用视图模块并使用视图数据源模块获取xml和json中的输出,并且它运行良好。 但在这种情况下,我必须设置对匿名用户的访问权限,因为我的Android应用程序将使用api调用不安全的URL,主要问题将是安全性。 因此,如果有人能够通过android使用httpurlconnection向我提供登录drupal网站的方法,即使这样做也可以达到目的。

提前致谢

我在我的log cat中得到以下内容,当我使用BasicNameValuePair传递参数时。

以下是我得到的错误:

09-21 13:09:59.793: WARN/System.err(18690): java.io.IOException: Cannot serialize nid=4
09-21 13:09:59.803: WARN/System.err(18690):     at org.xmlrpc.android.XMLRPCSerializer.serialize(XMLRPCSerializer.java:99)
09-21 13:09:59.803: WARN/System.err(18690):     at org.xmlrpc.android.XMLRPCCommon.serializeParams(XMLRPCCommon.java:36)
09-21 13:09:59.803: WARN/System.err(18690):     at org.xmlrpc.android.XMLRPCClient.methodCall(XMLRPCClient.java:250)
09-21 13:09:59.803: WARN/System.err(18690):     at org.xmlrpc.android.XMLRPCClient.callEx(XMLRPCClient.java:170)
09-21 13:09:59.803: WARN/System.err(18690):     at org.xmlrpc.android.XMLRPCClient.call(XMLRPCClient.java:281)
09-21 13:09:59.803: WARN/System.err(18690):     at com.drupal.DrupalActivity.onCreate(DrupalActivity.java:34)
09-21 13:09:59.803: WARN/System.err(18690):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
09-21 13:09:59.803: WARN/System.err(18690):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
09-21 13:09:59.803: WARN/System.err(18690):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
09-21 13:09:59.803: WARN/System.err(18690):     at android.app.ActivityThread.access$2300(ActivityThread.java:135)
09-21 13:09:59.803: WARN/System.err(18690):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136)
09-21 13:09:59.803: WARN/System.err(18690):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-21 13:09:59.803: WARN/System.err(18690):     at android.os.Looper.loop(Looper.java:144)
09-21 13:09:59.803: WARN/System.err(18690):     at android.app.ActivityThread.main(ActivityThread.java:4937)
09-21 13:09:59.803: WARN/System.err(18690):     at java.lang.reflect.Method.invokeNative(Native Method)
09-21 13:09:59.803: WARN/System.err(18690):     at java.lang.reflect.Method.invoke(Method.java:521)
09-21 13:09:59.803: WARN/System.err(18690):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-21 13:09:59.803: WARN/System.err(18690):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-21 13:09:59.803: WARN/System.err(18690):     at dalvik.system.NativeStart.main(Native Method)
09-21 13:09:59.803: WARN/System.err(18690): org.xmlrpc.android.XMLRPCException: java.io.IOException: Cannot serialize nid=4
09-21 13:09:59.803: WARN/System.err(18690):     at org.xmlrpc.android.XMLRPCClient.callEx(XMLRPCClient.java:237)
09-21 13:09:59.813: WARN/System.err(18690):     at org.xmlrpc.android.XMLRPCClient.call(XMLRPCClient.java:281)
09-21 13:09:59.813: WARN/System.err(18690):     at com.drupal.DrupalActivity.onCreate(DrupalActivity.java:34)
09-21 13:09:59.813: WARN/System.err(18690):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
09-21 13:09:59.813: WARN/System.err(18690):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
09-21 13:09:59.813: WARN/System.err(18690):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
09-21 13:09:59.813: WARN/System.err(18690):     at android.app.ActivityThread.access$2300(ActivityThread.java:135)
09-21 13:09:59.813: WARN/System.err(18690):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136)
09-21 13:09:59.813: WARN/System.err(18690):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-21 13:09:59.813: WARN/System.err(18690):     at android.os.Looper.loop(Looper.java:144)
09-21 13:09:59.813: WARN/System.err(18690):     at android.app.ActivityThread.main(ActivityThread.java:4937)
09-21 13:09:59.813: WARN/System.err(18690):     at java.lang.reflect.Method.invokeNative(Native Method)
09-21 13:09:59.813: WARN/System.err(18690):     at java.lang.reflect.Method.invoke(Method.java:521)
09-21 13:09:59.813: WARN/System.err(18690):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-21 13:09:59.813: WARN/System.err(18690):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-21 13:09:59.813: WARN/System.err(18690):     at dalvik.system.NativeStart.main(Native Method)
09-21 13:09:59.813: WARN/System.err(18690): Caused by: java.io.IOException: Cannot serialize nid=4
09-21 13:09:59.813: WARN/System.err(18690):     at org.xmlrpc.android.XMLRPCSerializer.serialize(XMLRPCSerializer.java:99)
09-21 13:09:59.813: WARN/System.err(18690):     at org.xmlrpc.android.XMLRPCCommon.serializeParams(XMLRPCCommon.java:36)
09-21 13:09:59.813: WARN/System.err(18690):     at org.xmlrpc.android.XMLRPCClient.methodCall(XMLRPCClient.java:250)
09-21 13:09:59.813: WARN/System.err(18690):     at org.xmlrpc.android.XMLRPCClient.callEx(XMLRPCClient.java:170)

提前致谢

1 个答案:

答案 0 :(得分:0)

尝试创建for循环,我认为在此之前你必须获得大小并存储它,然后将它作为for循环中的计数。

coutnt=0;
count=getname().getsize(){of the item}

for(;count;){
   put the value inside the loop.
}