【问题标题】:Creating drupal web services for android为安卓创建 Drupal Web 服务
【发布时间】:2011-11-21 16:45:26
【问题描述】:

在设置 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,因此主要问题将是安全性。 因此,如果有人可以为我提供使用 httpurlconnection 通过 android 登录 drupal 网站的方法,即使这样也能达到目的。

提前致谢

当我使用 BasicNameValuePair 传递参数时,我在日志猫中得到关注。

以下是我得到的错误:

09-21 13:09:59.793: WARN/System.err(18690): java.io.IOException: 无法序列化 nid=4 09-21 13:09:59.803: WARN/System.err(18690): 在 org.xmlrpc.android.XMLRPCSerializer.serialize(XMLRPCSerializer.java:99) 09-21 13:09:59.803: WARN/System.err(18690): 在 org.xmlrpc.android.XMLRPCCommon.serializeParams(XMLRPCCommon.java:36) 09-21 13:09:59.803: WARN/System.err(18690): 在 org.xmlrpc.android.XMLRPCClient.methodCall(XMLRPCClient.java:250) 09-21 13:09:59.803: WARN/System.err(18690): 在 org.xmlrpc.android.XMLRPCClient.callEx(XMLRPCClient.java:170) 09-21 13:09:59.803: WARN/System.err(18690): 在 org.xmlrpc.android.XMLRPCClient.call(XMLRPCClient.java:281) 09-21 13:09:59.803: WARN/System.err(18690): 在 com.drupal.DrupalActivity.onCreate(DrupalActivity.java:34) 09-21 13:09:59.803: WARN/System.err(18690): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069) 09-21 13:09:59.803: WARN/System.err(18690): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751) 09-21 13:09:59.803: WARN/System.err(18690): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803) 09-21 13:09:59.803: WARN/System.err(18690): 在 android.app.ActivityThread.access$2300(ActivityThread.java:135) 09-21 13:09:59.803: WARN/System.err(18690): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136) 09-21 13:09:59.803: WARN/System.err(18690): 在 android.os.Handler.dispatchMessage(Handler.java:99) 09-21 13:09:59.803: WARN/System.err(18690): 在 android.os.Looper.loop(Looper.java:144) 09-21 13:09:59.803: WARN/System.err(18690): 在 android.app.ActivityThread.main(ActivityThread.java:4937) 09-21 13:09:59.803: WARN/System.err(18690): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-21 13:09:59.803: WARN/System.err(18690): 在 java.lang.reflect.Method.invoke(Method.java:521) 09-21 13:09:59.803: WARN/System.err(18690): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 09-21 13:09:59.803: WARN/System.err(18690): 在 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: 无法序列化 nid=4 09-21 13:09:59.803: WARN/System.err(18690): 在 org.xmlrpc.android.XMLRPCClient.callEx(XMLRPCClient.java:237) 09-21 13:09:59.813: WARN/System.err(18690): 在 org.xmlrpc.android.XMLRPCClient.call(XMLRPCClient.java:281) 09-21 13:09:59.813: WARN/System.err(18690): 在 com.drupal.DrupalActivity.onCreate(DrupalActivity.java:34) 09-21 13:09:59.813: WARN/System.err(18690): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069) 09-21 13:09:59.813: WARN/System.err(18690): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751) 09-21 13:09:59.813: WARN/System.err(18690): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803) 09-21 13:09:59.813: WARN/System.err(18690): 在 android.app.ActivityThread.access$2300(ActivityThread.java:135) 09-21 13:09:59.813: WARN/System.err(18690): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136) 09-21 13:09:59.813: WARN/System.err(18690): 在 android.os.Handler.dispatchMessage(Handler.java:99) 09-21 13:09:59.813: WARN/System.err(18690): 在 android.os.Looper.loop(Looper.java:144) 09-21 13:09:59.813: WARN/System.err(18690): 在 android.app.ActivityThread.main(ActivityThread.java:4937) 09-21 13:09:59.813: WARN/System.err(18690): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-21 13:09:59.813: WARN/System.err(18690): 在 java.lang.reflect.Method.invoke(Method.java:521) 09-21 13:09:59.813: WARN/System.err(18690): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 09-21 13:09:59.813: WARN/System.err(18690): 在 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): 由: java.io.IOException: 无法序列化 nid=4 09-21 13:09:59.813: WARN/System.err(18690): 在 org.xmlrpc.android.XMLRPCSerializer.serialize(XMLRPCSerializer.java:99) 09-21 13:09:59.813: WARN/System.err(18690): 在 org.xmlrpc.android.XMLRPCCommon.serializeParams(XMLRPCCommon.java:36) 09-21 13:09:59.813: WARN/System.err(18690): 在 org.xmlrpc.android.XMLRPCClient.methodCall(XMLRPCClient.java:250) 09-21 13:09:59.813: WARN/System.err(18690): 在 org.xmlrpc.android.XMLRPCClient.callEx(XMLRPCClient.java:170)

提前致谢

【问题讨论】:

  • 我实际上建议看看 REST,它比 XML-RPC 容易得多
  • 客户端要求 xml 或 json :( 无论如何,如果我无法找到答案,那么我将继续使用 REST,我之前从未使用过 REST
  • 过去我对服务模块非常满意,并且 XMLRPC 一直都很好......如果您致电 client.call("node.get",2),当前返回的数据是什么格式不是 XML?它只是纯文本吗?这些值是在单行上还是在多行上拆分?您能否在您的问题中发布该输出?很抱歉用问题轰炸,最好能得到更多信息
  • 我已经编辑过了...你可以再次检查问题

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


【解决方案1】:

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

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

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

【讨论】:

  • 我知道逻辑...我不只是获取 xml 格式的数据...请仔细阅读问题
猜你喜欢
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多