3

MagentoのAPIを使用XMLRPC library for androidするAndroidプロジェクトで使用しました。
マグネトAPIを使用してMagentoストアにリクエストを送信するとエラーが発生します。
そのエラーには「ERROR CODE」が含まれています。

エラーは次のようなものです:

                                               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());
}
4

1 に答える 1

1

すでにエラー メッセージが表示されています。この場合は空です。src/org/xmlrpc/android/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);
}

ここでは、XMLRPCException を拡張した XMLRPCFault オブジェクト (src/org/xmlrpc/android/XMLRPCFault.java) を呼び出します。主要部分は次のとおりです。

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

ご覧のとおり、このメソッドは "XMLRPC Fault: [code 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

于 2014-08-08T09:24:15.390 に答える