当前位置: 首页 > news >正文

ABAP 调用接口传输文件(multipart form-data)

参数:

代码:

FUNCTION zfm_send_file.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IV_URL) TYPE  STRING
*"     REFERENCE(IS_CONTENT) TYPE  SFPATTACHMENTS
*"     REFERENCE(IV_TOKEN) TYPE  STRING
*"     VALUE(IS_MULTIPART) TYPE  CHAR1 DEFAULT ''
*"     REFERENCE(IV_TENANTLD) TYPE  STRING OPTIONAL
*"  EXPORTING
*"     REFERENCE(EV_TYPE) TYPE  CHAR1
*"     REFERENCE(EV_MESSAGE) TYPE  STRING
*"----------------------------------------------------------------------DATA: lo_http_client TYPE REF TO if_http_client,lo_part        TYPE REF TO if_http_entity.TYPES:BEGIN OF ty_response,bizcode TYPE char10,message TYPE char100,data    TYPE string,END OF ty_response.DATA:ls_response TYPE ty_response,lv_body     TYPE string.DATA: lt_formdata TYPE tihttpnvp,ls_formdata LIKE LINE OF lt_formdata,lv_len      TYPE i,lv_str      TYPE string.* 创建客户端请求cl_http_client=>create_by_url(EXPORTINGurl                = iv_urlIMPORTINGclient             = lo_http_clientEXCEPTIONSargument_not_found = 1plugin_not_active  = 2internal_error     = 3OTHERS             = 4 ).lv_len = xstrlen( is_content-data ).IF iv_token IS NOT INITIAL.CALL METHOD lo_http_client->request->set_header_fieldEXPORTINGname  = 'Authorization'value = iv_token.ENDIF.IF iv_tenantld IS NOT INITIAL.CALL METHOD lo_http_client->request->set_header_fieldEXPORTINGname  = 'TenantId'value = iv_tenantld.ENDIF.IF is_multipart = 'X'.CALL METHOD lo_http_client->request->set_header_fieldEXPORTINGname  = 'Content-Type'value = 'multipart/form-data'.*    CALL METHOD lo_http_client->request->set_header_field
*      EXPORTING
*        name  = 'x-timevale-project-id'
*        value = ''.CALL METHOD lo_http_client->request->if_http_entity~set_formfield_encodingEXPORTINGformfield_encoding = cl_http_request=>if_http_entity~co_encoding_raw.lo_part =  lo_http_client->request->if_http_entity~add_multipart( ).CALL METHOD lo_part->set_header_fieldEXPORTINGname  = 'content-disposition'value = 'form-data; name="file"; filename="' && is_content-name && '";'.lv_str = is_content-mimetype.CALL METHOD lo_part->set_content_typeEXPORTINGcontent_type = lv_str. "text/plainCALL METHOD lo_part->set_dataEXPORTINGdata   = is_content-dataoffset = 0length = lv_len.ELSE.lv_str = is_content-mimetype.CALL METHOD lo_http_client->request->set_header_fieldEXPORTINGname  = 'Content-Type' "text/plainvalue = lv_str.CALL METHOD lo_http_client->request->set_dataEXPORTINGdata   = is_content-dataoffset = 0length = lv_len.ENDIF.CALL METHOD lo_http_client->request->set_method( 'POST' ).lo_http_client->send(EXCEPTIONShttp_communication_failure = 1http_invalid_state         = 2 ).IF sy-subrc <> 0.ev_type = 'E'.lo_http_client->get_last_error( IMPORTING message = ev_message ).ELSE.lo_http_client->receive(EXCEPTIONShttp_communication_failure = 1http_invalid_state         = 2http_processing_failed     = 3 ).IF sy-subrc = 0." 返回字符串lv_body = lo_http_client->response->get_cdata( )./ui2/cl_json=>deserialize(EXPORTINGjson = lv_bodypretty_name = /ui2/cl_json=>pretty_mode-none"CHANGINGdata = ls_response ).IF ls_response-bizcode = '0'.ev_type = 'S'.ELSE.ev_type = 'E'.ENDIF.ev_message = ls_response-message.ELSE.ev_type = 'E'.lo_http_client->get_last_error( IMPORTING message = ev_message ).ENDIF.ENDIF.ENDFUNCTION.

http://www.dtcms.com/a/532442.html

相关文章:

  • 联邦学习:现状与展望!
  • Linux IPC 为什么要这么架构
  • 实验室PRCV 2025论文分享|如何利用大模型自动生成高质量英语阅读理解练习题
  • C 转 C++:高效上手的核心容器与函数指南
  • 网站建设人员岗位设置网站建设职业兴趣要求
  • MyBatis操作数据库入门
  • 美团网站开发北京网站建设外包公司
  • [nanoGPT] 编排训练 | `get_batch` | AdamW | `get_lr` | 分布式训练(DDP)
  • 2.2.1.1 大数据方法论与实践指南-公司产品功能命名管理
  • Spring Boot3零基础教程,@SpringBootApplication 注解详细说明,笔记63
  • Flutter 响应式 + Clean Architecture / MVU 模式 实战指南
  • 免费注册二级域名的网站网站制作哪些公司好
  • 【Go】--time包的使用
  • VR 工业组装案例
  • 网络运维管理
  • 使用STM32H723VGT6芯片驱动达妙电机
  • 【计算机通识】进程、线程、协程对比讲解--特点、优点、缺点
  • 专业做俄语网站建设上海建设公司注册
  • 南京营销型网站制作建设一个网站需要什么手续
  • POPAI全球启动仪式成功举办|AI×Web3全球算力革命启航
  • PCB笔记
  • C++ 类的学习(六) 虚函数
  • leetcode 2043 简易银行系统
  • 网站插件代码怎么用哪个网站上做自媒体最好
  • 【LeetCode100】--- 97.多数元素【思维导图+复习回顾】
  • Wasserstein 距离简介
  • 南宁网站建设外包vs做的网站如何
  • 【C++】前缀和算法习题
  • GitHub等平台形成的开源文化正在重塑加特
  • 基于单片机的家庭防盗防火智能门窗报警系统设计