2011-09-21 79 views
2

我一直在爲設置xmlrpc而特別在這個模塊中苦苦掙扎。
我使用的服務6.2和啓用了網站建設的xmlrpc - >模塊爲android創建drupal網絡服務

於是我下載了這個庫: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和J兒子,它運作良好。 但在這種情況下,我必須設置對匿名用戶的訪問權限,因爲我的android應用程序將使用api調用來解密URL,主要問題將是安全性。 因此,如果有人可以通過android使用httpurlconnection爲我提供登錄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) 

感謝

+0

其實我會建議看REST,它更容易比XML-RPC –

+0

客戶要求XML或JSON做:(anywaz如果我無法找到答案的話,我會移動到其餘的我從來沒有玩過REST之前 – abhishek

+0

過去我對服務模塊有着相當的喜悅,XMLRPC一直很好......目前從你的調用返回到client.call的數據格式是什麼( 「node.get」,2)'如果不是XML?它只是純文本嗎?是單行上的值還是分成多行?你能在你的問題中發佈輸出嗎?對不起,轟炸問題,它只是很好,獲得更多的信息 – Clive

回答

0

嘗試創建一個for循環,我想在此之前,你必須得到大小和存儲,然後使它作爲循環中的計數。

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

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

我知道邏輯...我不只是獲取XML格式的數據。 ..請仔細閱讀問題 – abhishek