Consultor Eletrônico



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.