在设置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)
提前致谢
答案 0 :(得分:0)
尝试创建for循环,我认为在此之前你必须获得大小并存储它,然后将它作为for循环中的计数。
coutnt=0;
count=getname().getsize(){of the item}
for(;count;){
put the value inside the loop.
}