2013-01-19 22 views
3

我在使用Magento API的Android項目中使用XMLRPC library for android
當我通過使用Magneto API向Magento商店發送請求時,出現錯誤。
該錯誤包含「ERROR CODE」與它。如何在Android的XMLRPC庫中獲取錯誤代碼

的錯誤是這樣的:

           this code 
                || 
                \/ 
org.xmlrpc.android.XMLRPCFault: XMLRPC Fault: [code 101] 
at org.xmlrpc.android.XMLRPCClient.callEx(XMLRPCClient.java:308) 
at org.xmlrpc.android.XMLRPCMethod.run(XMLRPCMethod.java:33) 
. 
. 
. 

有誰知道,如何從異常此錯誤代碼,就像我們如何獲取錯誤消息類似如下:

try 
{ 
    ...... 
    ...... 
} 
catch(Exception e) 
{ 
    Log.i("Error",e.getMessage()); 
} 

回答

1

你已經有錯誤信息,在這種情況下它只是空的。看看SRC /組織/ XMLRPC /安卓/ XMLRPCClient.java(線216):

if (tag.equals(Tag.FAULT)) { 
    pullParser.nextTag(); // Tag.VALUE (<value>) 
    Map<String, Object> map = (Map<String, Object>) iXMLRPCSerializer.deserialize(pullParser); 
    String faultString = (String) map.get(Tag.FAULT_STRING); 
    int faultCode = (Integer) map.get(Tag.FAULT_CODE); 
    entity.consumeContent(); 
    throw new XMLRPCFault(faultString, faultCode); 
} 

這裏我們調用XMLRPCFault對象(SRC /組織/ XMLRPC /安卓/ XMLRPCFault.java)延伸XMLRPCException。下面是主要部分:

public XMLRPCFault(String faultString, int faultCode) { 
    super("XMLRPC Fault: " + faultString + " [code " + faultCode + "]"); 
    this.faultString = faultString; 
    this.faultCode = faultCode; 
} 

正如你可以看到,這個方法告訴你 「XMLRPC故障:[代碼101]」,其中faultString = ''(空)和的faultcode = 101。順便說一句,這是urlopen錯誤[Errno 101]「網絡無法訪問」。如果您使用某個代理,則會發生這種情況

現在關於錯誤處理:您使用server.py作爲XML-RPC服務器。但是在代碼中沒有定義任何錯誤處理程序。您可以在'class MyFunc:'字符串後添加下一行:

class MyFuncs: 
    def _dispatch(self, method, args): 
    try: 
     return getattr(self, method)(*args) 
    except: 
     handle_logging() 
... 

並在handle_logging()中實現您的日誌記錄。更多細節在這裏:https://docs.python.org/2/library/logging.html#logging.Logger.exception

+0

感謝您的回覆.. –

相關問題