cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

No Response returned in get_cdata() method

Amey-Mogare
Contributor
0 Likes
6,214

Hi,

I am trying to call a HTTP url from ABAP system using following code :-


DATA: WL_URL            TYPE        STRING          ,
      W_HTTP_CLIENT     TYPE REF TO IF_HTTP_CLIENT  ,
      W_RESULT          TYPE        STRING          ,
      W_URL             TYPE        STRING          ,
      CODE_REASON       TYPE        STRING          ,
      HTTP_CODE  TYPE        I
      .

MOVE 'http://<host>:8080/artemis7/triton/extension.services.SearchRequirements.a7x' 
TO WL_URL.

CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
    EXPORTING
      URL                = WL_URL
    IMPORTING
      CLIENT             = W_HTTP_CLIENT
    EXCEPTIONS
      ARGUMENT_NOT_FOUND = 1
      PLUGIN_NOT_ACTIVE  = 2
      INTERNAL_ERROR     = 3
      OTHERS             = 4
      .

CALL METHOD W_HTTP_CLIENT->AUTHENTICATE
  EXPORTING
    USERNAME             = <username>
    PASSWORD             = <password>
    .

  CALL METHOD W_HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2.

    CALL METHOD W_HTTP_CLIENT->RECEIVE
      EXCEPTIONS
        HTTP_COMMUNICATION_FAILURE = 1
        HTTP_INVALID_STATE         = 2
        HTTP_PROCESSING_FAILED     = 3.

CALL METHOD W_HTTP_CLIENT->RESPONSE->GET_STATUS
    IMPORTING
      CODE = HTTP_CODE
      REASON = CODE_REASON
      .

W_RESULT = W_HTTP_CLIENT->RESPONSE->GET_CDATA( ).

HTTP request status code and message says 200 and OK.

And there is no exception as well.

However, I am not able to received any data in w_result from method 'response->get_cdata()'

When I open it in browser, it returns an XML response.

Please help.

Thanks and regards,

Amey

Accepted Solutions (0)

Answers (2)

Answers (2)

0 Likes

Hi , what is the exact issue here ? I am also facing same problem and response is coming as blank. I saw that you have added few more code . could you suggest why is it needed ?

Amey-Mogare
Contributor
0 Likes

Resolved it myself.


"STEP-1 : CREATE HTTP CLIENT
CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
    EXPORTING
      URL                = WL_URL
    IMPORTING
      CLIENT             = W_HTTP_CLIENT
    EXCEPTIONS
      ARGUMENT_NOT_FOUND = 1
      PLUGIN_NOT_ACTIVE  = 2
      INTERNAL_ERROR     = 3
      OTHERS             = 4
      .

  DATA: EMPTYBUFFER TYPE XSTRING.

      EMPTYBUFFER = ''.
  CALL METHOD W_HTTP_CLIENT->REQUEST->SET_DATA
        EXPORTING DATA = EMPTYBUFFER.

"STEP-2 :  AUTHENTICATE HTTP CLIENT
CALL METHOD W_HTTP_CLIENT->AUTHENTICATE
  EXPORTING
    USERNAME             = 'user'
    PASSWORD             = 'password'
    "LANGUAGE             = SY-LANGU
    .

CALL METHOD W_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
     EXPORTING NAME  = '~request_method'
               VALUE = 'GET'
                .

 CALL METHOD W_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
      EXPORTING NAME  = 'Content-Type'
                VALUE = 'text/xml; charset=utf-8'.

 CALL METHOD W_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
      EXPORTING NAME  = 'Accept'
                VALUE = 'text/xml, text/html'.

 CONCATENATE WL_URL '#' INTO SOAP_ACTION.
 CALL METHOD W_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
      EXPORTING NAME  = 'SOAPAction'
                VALUE = SOAP_ACTION.

"STEP-3 :  SEND HTTP REQUEST
  CALL METHOD W_HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2.

*-----------------------------------------------------------------

"STEP-4 :  GET HTTP RESPONSE
    CALL METHOD W_HTTP_CLIENT->RECEIVE
      EXCEPTIONS
        HTTP_COMMUNICATION_FAILURE = 1
        HTTP_INVALID_STATE         = 2
        HTTP_PROCESSING_FAILED     = 3.

"STEP-5 : Read HTTP RETURN CODE
CALL METHOD W_HTTP_CLIENT->RESPONSE->GET_STATUS
    IMPORTING
      CODE = HTTP_STATUS_CODE
      REASON = STATUS_TEXT
      .
  WRITE: / 'HTTP_STATUS_CODE = ',
          HTTP_STATUS_CODE,
         / 'STATUS_TEXT = ',
         STATUS_TEXT
         .

"STEP-6 :  READ RESPONSE DATA
 CALL METHOD W_HTTP_CLIENT->RESPONSE->GET_CDATA
        RECEIVING DATA = W_RESULT .

Ask a Question
Top Q&A Solution Author