2017-03-21 15 views
1

私はzeepでsoapサービスを呼び出しているときにエラーの詳細を取得しようとしています。zeep pythonライブラリのFault.detail(lxml.etree._Element)を解析する方法

parse zeep.exceptions.Fault.detail?これはreturn lxml.etree._Elementです。ここで

try: 
    client = Client(wsdl=self.__wsdl) 
    response = client.service.CustomerInformation(CustomerInformationService=self.service, faultStyle='wsdl') 
except Fault as error: 
    detail = error.detail 
    # parse detail here 

は、応答XMLです:私はこのコードを使用してい

'障害' タイプの

<?xml version="1.0" ?> 
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap-env:Body > 
     <soap-env:Fault > 
      <faultcode>soap-env:Client</faultcode> 
      <faultstring>Client Error</faultstring> 
      <detail> 
       <ouaf:Fault xmlns:ouaf="urn:oracle:ouaf"> 
        <ResponseStatus>F</ResponseStatus> 
        <ResponseCode>2013</ResponseCode> 
        <ResponseText> 
          Error while executing the request: 
          (Server Message) 
           Category: 90006 
           Number: 32200 
           Call Sequence: 
           Program Name: CustomerInformationService 
           Text: The personal account was not found: 9134211141 
           Description: 
           Table: null 
           Field: null 
        </ResponseText> 
        <ResponseData numParm="1" text="The personal account was not found: 9134211141" category="90006" number="32200" parm1="9134211141" /> 
       </ouaf:Fault> 
      </detail> 
     </soap-env:Fault> 
    </soap-env:Body > 
</soap-env:Envelope> 

Diffinition XMLデータからは、私のWSDLに存在します。

答えて

1

error.codeまたはerror.messageを使用して、探したいエラーと一致させることができます。

https://github.com/mvantellingen/python-zeep/blob/master/src/zeep/exceptions.py#L53

あなたはerror.detailには何も表示されない場合は、のpython-ZEEPプロジェクトへのPRを送信することを検討してください。

+0

私はこの情報を参照していますが、WSLDで詳細を解析する必要があります。 [ticket#392](https://github.com/mvantellingen/python-zeep/issues/392) –

関連する問題