http 发送文件

*&---------------------------------------------------------------------*
*& Form FRM_SENT_FIELD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> LV_FILE_XSTRING
*&      <-- LV_OSS_ID
*&---------------------------------------------------------------------*
FORM FRM_SENT_FIELD  USING    P_LV_FILE_XSTRING
                     CHANGING P_LV_OSS_ID.


DATA:
   lo_http_client TYPE REF TO IF_HTTP_CLIENT,
   iv_url TYPE string.

DATA:
   LV_FILE_XSTRING  TYPE XSTRING,
   LV_RESULT_STRING TYPE string,
   LV_MESSAGE       TYPE STRING,
   LV_OSS_ID       TYPE STRING,
   lv_i TYPE I.


   "sent data to cloud
DATA: L_URL TYPE STRING ,
      L_PARAMS_STRING TYPE STRING ,
      L_HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT ,
      CLIENT TYPE REF TO IF_HTTP_CLIENT ,
      L_RESULT TYPE STRING ,
      L_STATUS_TEXT TYPE STRING ,
      L_HTTP_STATUS_CODE TYPE I ,
      L_HTTP_LENGTH TYPE I ,
      L_PARAMS_XSTRING TYPE XSTRING ,
      L_XSTRING TYPE XSTRING ,
      L_IS_XML_TABLE TYPE STANDARD TABLE OF SMUM_XMLTB ,
      L_IS_RETURN TYPE STANDARD TABLE OF BAPIRET2 ,
      L_OUT_TAB TYPE STANDARD TABLE OF TBL1024,
      PART TYPE REF TO IF_HTTP_ENTITY ,
      IT_DATA1 TYPE STANDARD TABLE OF MARA,
      IT_DATA TYPE XSTRING,
      LV_LEN TYPE I.
      DATA: IT_FILE_CONTENT_BINARY TYPE STANDARD TABLE OF SDOKCNTBIN,
      PATH TYPE STRING VALUE '<PATH NAME>',
      PATH1 TYPE STRING VALUE '<SUBPATH NAME>'.


   iv_url = 'http://ehr-m.dev.qdama.cn:48888/ehrDownloadService/upload/ufs/batchUploadFile'.
   "clear:LO_HTTP_CLIENT.
   CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
      EXPORTING
         URL          = IV_URL
      IMPORTING
         CLIENT        = LO_HTTP_CLIENT
      EXCEPTIONS
         ARGUMENT_NOT_FOUND = 1
         PLUGIN_NOT_ACTIVE = 2
         INTERNAL_ERROR = 3.

    CALL METHOD LO_HTTP_CLIENT->request->set_method( if_http_request=>co_request_method_post ).

    CALL METHOD LO_HTTP_CLIENT->request->set_version( if_http_request=>co_protocol_version_1_0 ).

    CALL METHOD LO_HTTP_CLIENT->request->if_http_entity~set_content_type(
      EXPORTING
        content_type = 'multipart/form-data' ).

    CALL METHOD LO_HTTP_CLIENT->request->if_http_entity~set_formfield_encoding
      EXPORTING
        formfield_encoding = cl_http_request=>if_http_entity~co_encoding_raw.

    part = LO_HTTP_CLIENT->request->if_http_entity~add_multipart( ).
    CALL METHOD part->set_header_field
      EXPORTING
        name  = 'content-disposition'
        value = 'form-data; name="file"; filename="god.jpg";'.

    CALL METHOD part->set_content_type
      EXPORTING
        content_type = 'application/x-jpg-compressed'.

    LV_LEN = xstrlen( P_LV_FILE_XSTRING ).

    CALL METHOD part->set_data
      EXPORTING
        data   = P_LV_FILE_XSTRING
        offset = 0
        length = LV_LEN.


  CALL METHOD LO_HTTP_CLIENT->send
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3
      OTHERS                     = 4.

  "读取远程服务返回的处理过结果。
  CALL METHOD LO_HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.
  IF SY-SUBRC <> 0 .
    LO_HTTP_CLIENT->GET_LAST_ERROR( IMPORTING MESSAGE = LV_MESSAGE ).
*    E_RETURN-MESSAGE = LV_MESSAGE.
*    E_RETURN-TYPE = 'E'.
    RETURN.
  ELSE.
    LV_RESULT_STRING = LO_HTTP_CLIENT->RESPONSE->GET_CDATA( ).
*    E_DATA = /UI2/CL_JSON=>GENERATE( JSON = LV_RESULT_STRING ).
  ENDIF.

ENDFORM.
posted @ 2021-05-14 13:25  linhuang  阅读(13)  评论(0编辑  收藏  举报  来源