Kbase P124349: The OpenEdge Web Service client only returns the first line of a SOAP Fault String
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  6/11/2007 |
|
Status: Unverified
FACT(s) (Environment):
OpenEdge 10.x
UNIX
Windows
SYMPTOM(s):
The OpenEdge Web Service client only returns the first line of a SOAP Fault String
The OpenEdge Web Service client does not return the full SOAP Fault String
The SOAP Fault String consists of several lines of text
Using the ERROR-STATUS:GET-MESSAGE() method
CAUSE:
The ERROR-STATUS:GET-MESSAGE() method returns the ABL error message that would be presented to the end-user.
FIX:
Use the ERROR-STATUS:ERROR-OBJECT-DETAIL:SOAP-FAULT-STRING attribute to get the full SOAP Fault String, for example:
IF ERROR-STATUS:ERROR THEN DO:
DEFINE VARIABLE iCnt AS INTEGER NO-UNDO.
DO iCnt = 1 TO ERROR-STATUS:NUM-MESSAGES:
MESSAGE ERROR-STATUS:GET-MESSAGE(iCnt)
VIEW-AS ALERT-BOX INFO BUTTONS OK.
END.
IF VALID-HANDLE(ERROR-STATUS:ERROR-OBJECT-DETAIL) THEN DO:
DEFINE VARIABLE hXML AS HANDLE NO-UNDO.
DEFINE VARIABLE mDoc AS MEMPTR NO-UNDO.
CREATE X-DOCUMENT hXML.
IF VALID-HANDLE(ERROR-STATUS:ERROR-OBJECT-DETAIL:SOAP-FAULT-DETAIL) THEN DO:
hXML:LOAD('LONGCHAR', ERROR-STATUS:ERROR-OBJECT-DETAIL:SOAP-FAULT-DETAIL:GET-SERIALIZED(), FALSE).
hXML:SAVE("memptr", mDoc).
END.
ELSE mdoc = ?.
MESSAGE "Fault Code : " ERROR-STATUS:ERROR-OBJECT-DETAIL:SOAP-FAULT-CODE SKIP
"Fault String: " ERROR-STATUS:ERROR-OBJECT-DETAIL:SOAP-FAULT-STRING SKIP
"Fault Actor : " ERROR-STATUS:ERROR-OBJECT-DETAIL:SOAP-FAULT-ACTOR SKIP
"Error Type : " ERROR-STATUS:ERROR-OBJECT-DETAIL:TYPE SKIP SKIP
"Fault Detail: " SKIP GET-STRING(mDoc,1)
VIEW-AS ALERT-BOX INFO BUTTONS OK.
END.
END.