Skip to content

Instantly share code, notes, and snippets.

@furlan
Last active July 19, 2025 09:59
Show Gist options
  • Select an option

  • Save furlan/94e6a24b2c702c3fc5c6 to your computer and use it in GitHub Desktop.

Select an option

Save furlan/94e6a24b2c702c3fc5c6 to your computer and use it in GitHub Desktop.
HTTP Client
*&---------------------------------------------------------------------*
*& Report ZPOC_HTTP_CLIENT
*&
*&---------------------------------------------------------------------*
*& Based on this SCN post:
*& http://scn.sap.com/thread/3437990
*&---------------------------------------------------------------------*
Report ZPOC_HTTP_CLIENT.
*PARAMETERS p_url type string LOWER CASE DEFAULT 'https://github.com/furlan/reploy.git'.
PARAMETERS p_url type string LOWER CASE DEFAULT 'http://www.thomas-bayer.com/sqlrest/'.
DATA content TYPE string.
DATA url TYPE string.
DATA TPuser TYPE string.
DATA TPpassword TYPE string.
url = p_url.
TPuser = 'furlan'.
TPpassword = 'password'.
" overwrite TP-User and TP-Password with corresponding encoded base64 values
DATA base64encoder TYPE REF TO cl_http_utility.
CREATE OBJECT base64encoder.
TPuser = base64encoder->if_http_utility~encode_base64( TPuser ) .
TPpassword = base64encoder->if_http_utility~encode_base64( TPpassword ) .
PERFORM sendRequest
USING url TPuser TPpassword
CHANGING content.
WRITE content.
FORM sendRequest USING url TYPE STRING
TPuser TYPE STRING
TPpassword TYPE STRING
CHANGING content TYPE STRING.
DATA HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT.
DATA utf8Content TYPE xstring.
DATA utf8Length TYPE i.
DATA tmpstr TYPE string.
DATA code TYPE i.
DATA reason TYPE string.
DATA l_request TYPE REF TO if_http_request.
CALL METHOD CL_HTTP_CLIENT=>CREATE_by_url
EXPORTING
URL = url
IMPORTING
CLIENT = HTTP_CLIENT.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~request_method'
VALUE = 'GET'.
tmpstr = utf8Length.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Content-Length'
VALUE = tmpstr.
" Set TP-User and TP-Password
* CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
* EXPORTING
* NAME = 'TP-User'
* VALUE = TPuser.
* CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
* EXPORTING
* NAME = 'TP-Password'
* VALUE = TPpassword.
CALL METHOD HTTP_CLIENT->SEND
EXPORTING
timeout = 5000
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3
HTTP_INVALID_TIMEOUT = 4
OTHERS = 5.
IF sy-subrc <> 0.
tmpstr = sy-subrc.
WRITE: 'HTTP communication failure (SEND failed: ', tmpstr, '); aborting.'.
HTTP_CLIENT->CLOSE( ).
EXIT.
ENDIF.
CALL METHOD HTTP_CLIENT->RECEIVE
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3.
IF sy-subrc <> 0.
tmpstr = sy-subrc.
WRITE: 'HTTP communication failure (RECV failed: ', tmpstr, '); aborting.'.
HTTP_CLIENT->CLOSE( ).
EXIT.
ENDIF.
CALL METHOD HTTP_CLIENT->RESPONSE->GET_STATUS
IMPORTING
code = code
reason = reason.
CLEAR: content.
"Read content data
utf8Content = HTTP_CLIENT->RESPONSE->GET_DATA( ).
Content = HTTP_CLIENT->RESPONSE->GET_DATA( ).
IF code < 200 OR code >= 300.
tmpstr = code.
WRITE: 'HTTP communication failure (code:', tmpstr, '); aborting.'.
utf8Content = HTTP_CLIENT->RESPONSE->GET_DATA( ).
HTTP_CLIENT->CLOSE( ).
EXIT.
ELSE.
WRITE 'OK'.
ENDIF.
"Close client connection
HTTP_CLIENT->CLOSE( ).
ENDFORM.
@sumanpanja17
Copy link

can you help me i am sending csv file via http request, but i want send a file name with it, how can i do that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment