android - 为 android 创建 drupal web 服务

标签 android web-services json drupal xml-rpc

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

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

为了保持简单,只是为了查看实现,没有涉及安全功能,没有 API key 或 session key ,甚至匿名用户也可以访问 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

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

提前致谢

当我使用 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)

提前致谢

最佳答案

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

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

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

关于android - 为 android 创建 drupal web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7495984/

相关文章:

android - Cordova 插件不工作

java - 尝试使用 json 数据而不是纯文本或 x-www-form-urlencoded 进行 JQuery 发布时出现 CORS 问题

java - 从 wsdl 到客户端 java web 服务(服务器有自签名证书)

c++ - boost 变体 : How to model JSON?

java - 如何在 JAX-RS 中生成具有命名数组和未命名对象的 json?

css - 事件类名不起作用

android.R.id.content 作为 Fragment 的容器

java - 检测 Android 上是否正在使用 Java 库的简洁方法

java - Android Studio 拍照时放置相框

java - Apache CXF |对 Web 服务调用的多个响应