在设置 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/