Создание друпал веб сервисов для android - PullRequest
2 голосов
/ 21 сентября 2011

Я особенно боролся с этим модулем при настройке xmlrpc.
Я использую сервисы 6.2 и включил xmlrpc при создании сайта -> module

Затем я скачал эту библиотеку: http://code.google.com/p/android-xmlrpc/

В целях упрощения и просто для ознакомления с реализацией не предусмотрена ни одна функция безопасности, ни ключ API, ни сеансовый ключ, и даже анонимный пользователь может посетить эту ссылку .

* 1010.* Ниже приведен код, который я использую в своем приложении для 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 Framework я могу использовать оба параметра для фильтрации содержимого.

А когда я использую BasicNameValuePair, как предложено в этой ссылке: -

Учебник по Android, Drupal & DrupalCloud или Android-xmlrpc?

Вывод, которыйЯ получаю следующее:

{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-адресов, основной проблемой будет безопасность.Так что, если кто-то может предоставить мне способ входа на сайт drupal через Android с использованием httpurlconnection, даже если это послужит цели.

Заранее спасибо

Я получаю подписку в моем журнале 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 голосов
/ 26 сентября 2011

Попробуйте создать цикл for, я думаю, что до этого вам нужно получить размер и сохранить его, а затем сделать это как счет в цикле for.

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

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