2011-09-21 5 views
2

J'ai eu des difficultés avec ce module lors de la configuration de xmlrpc.
J'utilise les services 6.2 et a permis xmlrpc dans la construction du site -> ModuleCréation de services Web drupal pour Android

Je téléchargé cette bibliothèque: http://code.google.com/p/android-xmlrpc/

Aux fins de le garder simple et juste pour voir la mise en œuvre il n'y a pas de fonction de sécurité impliqués aucune clé API ou clé de session et même l'utilisateur anonyme peut visiter this link.

Voici le code que je me sers dans mon application android pour obtenir des données:

XMLRPCClient client = new XMLRPCClient("http://mydomain.com/infra2/drupal-.19/services/xmlrpc"); 

try{ 
    Log.d("SUM",""+client.call("node.get",2)); 
}catch { 
    e.printstacktrace(); 
} 

Je reçois les données complètes du noeud 2 ici, mais il est pas au format XML. De plus, si j'utilise le code suivant:

Log.d("SUM",""+client.call("node.get",2,"user")); 

pour obtenir en particulier l'utilisateur qui a créé le noeud 2. Je reçois une erreur, mais dans le cadre que je peux utiliser drupal les deux paramètres pour filtrer le contenu.

Et quand je l'utilise BasicNameValuePair comme suggéré dans ce lien: -

Android, Drupal & DrupalCloud or Android-xmlrpc tutorial?

La sortie que je reçois est le suivant:

{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} 

qui est en format simple php et non xml

J'ai également essayé d'obtenir le même fonctionnement avec le module de vues et d'utiliser le module de source de données de vues pour obtenir la sortie en xml et j fils et ça marche bien. Mais dans ce cas, je dois également définir l'accès à l'utilisateur anonyme et puisque mon application Android utilisera les appels API vers des URL non sécurisées, le problème majeur sera la sécurité. Donc, si quelqu'un pouvait me fournir la méthode pour se connecter au site Web drupal via android en utilisant httpurlconnection même qui serait utile.

Merci à l'avance

que je reçois dans mon chat suivant journal et quand j'utiliser BasicNameValuePair pour passer les paramètres.

Voici les erreurs que je reçois:

 
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) 

Merci à l'avance

+0

Je suggère en fait de regarder REST, il est beaucoup plus facile à faire que XML-RPC –

+0

exigence client XML ou JSON :(anywaz si je ne parviens pas à trouver une réponse alors je vais passer à REST i Je n'ai jamais joué avec REST avant – abhishek

+0

J'ai eu un peu de joie avec le module de services dans le passé et XMLRPC a toujours été bien ... quel format sont les données qui reviennent actuellement de votre appel à 'client.call ("node.get", 2) 'si ce n'est pas du XML? Est-ce du texte simple? Les valeurs sont-elles sur une seule ligne ou divisées sur plusieurs lignes? Seriez-vous capable de publier cette sortie dans votre question?Désolé de bombarder avec des questions, il serait juste bon d'obtenir un peu plus d'informations – Clive

Répondre

0

Essayez de créer une boucle, je pense avant que vous devez obtenir la taille et le stocker puis faire comme un compte dans la boucle for.

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

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

je connais la logique ... je ne reçois pas seulement les données au format xml. .. s'il vous plaît lire attentivement les questions – abhishek

Questions connexes