请问有没有用过Axis web service框架的人呢?请教个问题哈,当出现异常的时候Axis会把异常封装成AxisFault对吧?那我如何从AxisFault中得到SOAP错误里面的fault code呢?希望有高人指点哈,谢谢了。

解决方案 »

  1.   

    不好意思,由于我对Axis和Soap不是很熟,所以可能没有表述清楚。我尽量表述清楚,我的意思是我的web service发生了异常,自然会跑出SOAP错误出来对吧,这样就会产生类似的错误出来:
    <SOAP-ENV:Fault xmlns:sqlsoapfaultcode="http://schemas.microsoft.com/sqlserver/2004/SOAP/SqlSoapFaultCode">
      <faultcode>SOAP-ENV:Client</faultcode>
      <faultstring>There was an error in the incoming SOAP request packet:  Client, InvalidXml</faultstring>
      <faultactor>http://schemas.microsoft.com/sqlserver/2004/SOAP</faultactor>
      <detail xmlns:SOAP-1_2-ENV="http://www.w3.org/2003/05/soap-envelope">
        <SOAP-1_2-ENV:Code>
          <SOAP-1_2-ENV:Value>SOAP-1_2-ENV:Sender</SOAP-1_2-ENV:Value>
          <SOAP-1_2-ENV:Subcode>
             <SOAP-1_2-ENV:Value>sqlsoapfaultcode:InvalidXml</SOAP-1_2-ENV:Value>
          </SOAP-1_2-ENV:Subcode>
        </SOAP-1_2-ENV:Code>
        <SOAP-1_2-ENV:Reason>
          <SOAP-1_2-ENV:Text xml:lang="en-US">There was an error in the incoming SOAP request packet:  Sender, InvalidXml</SOAP-1_2-ENV:Text>
        </SOAP-1_2-ENV:Reason>
        <SOAP-1_2-ENV:Node>http://MyServer:80/sql</SOAP-1_2-ENV:Node>
        <SOAP-1_2-ENV:Role>http://schemas.microsoft.com/sqlserver/2004/SOAP</SOAP-1_2-ENV:Role>
        <SOAP-1_2-ENV:Detail>
          <sqlresultstream:SqlMessage xsi:type="sqlmessage:SqlMessage">
             <sqlmessage:Class>16</sqlmessage:Class>
             <sqlmessage:LineNumber>0</sqlmessage:LineNumber>
             <sqlmessage:Message>XML parsing: line 3, character 0, incorrect document syntax</sqlmessage:Message>
             <sqlmessage:Number>9422</sqlmessage:Number>
             <sqlmessage:Source>Microsoft-SQL/9.0</sqlmessage:Source>
             <sqlmessage:State>1</sqlmessage:State>
          </sqlresultstream:SqlMessage>
        </SOAP-1_2-ENV:Detail>
      </detail>
    </SOAP-ENV:Fault>可是AXIS会把SOAP错误封装成它本身的EXCEPTION对象AxisFault对象,对吧,当我得到这个异常对象后我如何能得到soap错误里面的faultcode节点里面的值呢,我直接用AxisFault.getFaultCode()方法好像无法得到啊??
      

  2.   

    这是个xml,你要得到某个标签的值,得先把xml反序列化成对象吧
    不过,我不理解你为什么要获得他的值呢,axis出错说明程序跑出错了,要捕捉异常直接用exception捕捉好了,难道还要根据那个code值不同来做不同处理?