Consume wsdl ( webservice ) results in xml formatting error

Depechie

New Member
Found out this seems a bug inside OpenEdge 10.0B, running this in OpenEdge 10.1B01 works correct.
 

redsuitee

Member
I work with Progress 10.2B..
I got a similar error said "Malformed XML fragment: only whitespace content allowed outside root element at line 1 and column 3 (11781)"

What is it means?
Plz helps.. thanks
 

rstanciu

Member
Code:
DEFINE VARIABLE retValue    AS CHARACTER INITIAL "OK" NO-UNDO.
DEFINE VARIABLE err         AS LOGICAL   NO-UNDO.

DEFINE VARIABLE hWebService AS HANDLE NO-UNDO.
DEFINE VARIABLE hTextCasingSoapType AS HANDLE NO-UNDO.

CREATE SERVER hWebService.
hWebService:CONNECT("-WSDL 'http://www.dataaccess.com/webservicesserver/textcasing.wso?WSDL'").
RUN TextCasingSoapType SET hTextCasingSoapType ON hWebService.

DEFINE VARIABLE sAString AS CHARACTER NO-UNDO.
DEFINE VARIABLE InvertStringCaseResult AS CHARACTER NO-UNDO.

sAString = '<ns0:InvertStringCase ' +
'xmlns:ns0="http://www.dataaccess.com/webservicesserver/">' +
' <ns0:sAString>ABCDEFG</ns0:sAString>' +
'</ns0:InvertStringCase>'.

RUN InvertStringCase IN hTextCasingSoapType
(INPUT sAString, OUTPUT InvertStringCaseResult) NO-ERROR.
RUN ErrorInfo (OUTPUT err).
IF NOT err THEN DO:
  MESSAGE InvertStringCaseResult VIEW-AS ALERT-BOX.
END.


hWebService:DISCONNECT().

/*******************************************************************/
PROCEDURE ErrorInfo: /*1*/
  DEFINE OUTPUT PARAMETER errorfound AS LOGICAL INITIAL FALSE.
  DEFINE VARIABLE i                  AS INTEGER NO-UNDO.
  DEFINE VARIABLE hSOAPFault         AS HANDLE NO-UNDO.
  DEFINE VARIABLE hSOAPFaultDetail   AS HANDLE NO-UNDO.
  DEFINE VARIABLE HeaderXML AS LONGCHAR VIEW-AS EDITOR SIZE 70 BY 15 LARGE.
  IF ERROR-STATUS:NUM-MESSAGES > 0 THEN DO:
     errorfound = TRUE.
     DO i = 1 TO ERROR-STATUS:NUM-MESSAGES:
        MESSAGE ERROR-STATUS:GET-MESSAGE(i) VIEW-AS ALERT-BOX.
     END.
/*2*/
     IF VALID-HANDLE(ERROR-STATUS:ERROR-OBJECT-DETAIL) THEN DO:
       hSOAPFault = ERROR-STATUS:ERROR-OBJECT-DETAIL.
       MESSAGE
       "Fault Code: "   hSOAPFault:SOAP-FAULT-CODE        SKIP
       "Fault String: " hSOAPFault:SOAP-FAULT-STRING      SKIP
       "Fault Actor: "  hSOAPFault:SOAP-FAULT-ACTOR       SKIP
       "Error Type: "   hSOAPFault:TYPE  VIEW-AS ALERT-BOX.
/*3*/
       IF VALID-HANDLE(hSOAPFault:SOAP-FAULT-DETAIL) THEN  DO:
            hSOAPFaultDetail = hSOAPFault:SOAP-FAULT-DETAIL.
            MESSAGE  "Error Type: " hSOAPFaultDetail:TYPE
                     VIEW-AS ALERT-BOX.
            HeaderXML = hSOAPFaultDetail:GET-SERIALIZED().
            DISPLAY HeaderXML LABEL "Serialized SOAP fault detail"
                    WITH FRAME a.
        END.
     END.
  END.
END PROCEDURE.
/*******************************************************************/
 

redsuitee

Member
I have called ErrorInfo procedures in my codes.
But there is appear nothing.

Please tell me what i do wrong, here is the code.

Code:
    RUN ReadRQ IN hPmsXchangeService(INPUT OTA_ReadRQ, OUTPUT OTA_ResRetrieveRS).

    DEF VAR err AS LOGICAL.
    RUN ErrorInfo (OUTPUT err).
    IF NOT err THEN DO:
       DISP "xxxx".
    END.
    ELSE DISP "yyyy".

    PAUSE.


    hWebService:DISCONNECT() NO-ERROR.


PROCEDURE ErrorInfo: /*1*/
  DEFINE OUTPUT PARAMETER errorfound AS LOGICAL INITIAL FALSE.
  DEFINE VARIABLE i                  AS INTEGER NO-UNDO.
  DEFINE VARIABLE hSOAPFault         AS HANDLE NO-UNDO.
  DEFINE VARIABLE hSOAPFaultDetail   AS HANDLE NO-UNDO.
  DEFINE VARIABLE HeaderXML AS LONGCHAR VIEW-AS EDITOR SIZE 70 BY 15 LARGE.
  IF ERROR-STATUS:NUM-MESSAGES > 0 THEN DO:
     errorfound = TRUE.
     DO i = 1 TO ERROR-STATUS:NUM-MESSAGES:
        MESSAGE ERROR-STATUS:GET-MESSAGE(i) VIEW-AS ALERT-BOX.
     END.
/*2*/
     IF VALID-HANDLE(ERROR-STATUS:ERROR-OBJECT-DETAIL) THEN DO:
       hSOAPFault = ERROR-STATUS:ERROR-OBJECT-DETAIL.
       MESSAGE
       "Fault Code: "   hSOAPFault:SOAP-FAULT-CODE        SKIP
       "Fault String: " hSOAPFault:SOAP-FAULT-STRING      SKIP
       "Fault Actor: "  hSOAPFault:SOAP-FAULT-ACTOR       SKIP
       "Error Type: "   hSOAPFault:TYPE  VIEW-AS ALERT-BOX.
/*3*/
       IF VALID-HANDLE(hSOAPFault:SOAP-FAULT-DETAIL) THEN  DO:
            hSOAPFaultDetail = hSOAPFault:SOAP-FAULT-DETAIL.
            MESSAGE  "Error Type: " hSOAPFaultDetail:TYPE
                     VIEW-AS ALERT-BOX.
            HeaderXML = hSOAPFaultDetail:GET-SERIALIZED().
            DISPLAY HeaderXML LABEL "Serialized SOAP fault detail"
                    WITH FRAME a.
        END.
     END.
  END.
END PROCEDURE.
 

rstanciu

Member
Code:
RUN ReadRQ IN hPmsXchangeService(INPUT OTA_ReadRQ, OUTPUT OTA_ResRetrieveRS) NO-ERROR.[FONT=monospace]
[/FONT]RUN ErrorInfo (OUTPUT err).
 
Top