Last active
July 19, 2025 09:59
-
-
Save furlan/94e6a24b2c702c3fc5c6 to your computer and use it in GitHub Desktop.
HTTP Client
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| *&---------------------------------------------------------------------* | |
| *& 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. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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?