ABAP代码实现HTTP form-data接口(获取token)

postman测试场景
在这里插入图片描述在这里插入图片描述实现代码

    DATA : lo_http   TYPE REF TO if_http_client, " http客户端
           lv_url    TYPE string,                "URL地址
           lv_code   TYPE i,                     "接口调用返回状态 200:成功
           lv_reason TYPE string,                "接口返回失败原因
           lv_auth   TYPE string.                "抬头Authorization参数的值

    DATA : BEGIN OF ls_ret ,
             access_token TYPE string,
             token_type   TYPE string,
             expires_in   TYPE string,
             scope        TYPE string,
             tenantid     TYPE string,
           END OF ls_ret .

    "创建HTTP请求
    cl_http_client=>create_by_url( EXPORTING url    = lv_url
                                   IMPORTING client = lo_http ).

    "设置body格式
    CALL METHOD lo_http->request->set_header_field
      EXPORTING
        name  = 'Content-Type'
        value = 'multipart/form-data'.

    "设置求情报文
    CALL METHOD lo_http->request->set_header_field
      EXPORTING
        name  = '~request_method'
        value = 'POST'.

    "设置抬头参数值
    CALL METHOD lo_http->request->set_header_field
      EXPORTING
        name  = 'Authorization'
        value = lv_auth.

    "设置form-data参数
    DATA : lv_01 TYPE REF TO if_http_entity,
           lv_02 TYPE REF TO if_http_entity.

    lv_01 = lo_http->request->if_http_entity~add_multipart( ). "新增form-data参数

    CALL METHOD lv_01->set_header_field  "设置参数名
      EXPORTING
        name  = 'content-disposition'
        value = 'form-data;name="grant_type"'.

    CALL METHOD lv_01->append_cdata      "设置参数值
      EXPORTING
        data = 'client_credentials'.

    lv_02 = lo_http->request->if_http_entity~add_multipart( ).

    CALL METHOD lv_02->set_header_field
      EXPORTING
        name  = 'content-disposition'
        value = 'form-data;name="scope"'.

    CALL METHOD lv_02->append_cdata
      EXPORTING
        data = 'write'.

    "发送
    CALL METHOD lo_http->send
      EXCEPTIONS
        http_communication_failure = 1
        http_invalid_state         = 2
        http_processing_failed     = 3
        OTHERS                     = 4.
    IF sy-subrc <> 0.
      CALL METHOD lo_http->get_last_error
        IMPORTING
          message = DATA(lv_error_message).

      CALL METHOD lo_http->close.

      RETURN.
    ENDIF.

    "接收
    CALL METHOD lo_http->receive
      EXCEPTIONS
        http_communication_failure = 1
        http_invalid_state         = 2
        http_processing_failed     = 3
        OTHERS                     = 9.
    IF sy-subrc <> 0.
      CALL METHOD lo_http->get_last_error
        IMPORTING
          message = DATA(lv_emsg).

      CALL METHOD lo_http->close.
      RETURN.
    ENDIF.

    " 提取返回字符串
    CALL METHOD lo_http->response->get_status
      IMPORTING
        code   = lv_code
        reason = lv_reason.

    " 获取返回的JSON
    DATA(lv_retjson) = lo_http->response->get_cdata( ).

    "关闭接口
    CALL METHOD lo_http->close.

    IF lv_code = '200' .
      "解析JSONJ报文
      /ui2/cl_json=>deserialize( EXPORTING json = lv_retjson CHANGING data = ls_ret ).
    ENDIF .
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP是一种用于SAP系统开发的编程语言,其中pp模块是SAP系统中的生产计划模块,主要用于生产计划、生产过程控制和生产数据记录等。 ABAP开发在pp模块中的要点如下: 1. 熟悉pp模块的基础知识:了解pp模块的功能和流程,包括物料需求计划、生产订单、工作中心、生产版本等。这些知识对于正确理解和开发与pp模块相关的程序非常重要。 2. 掌握ABAP语言特性:ABAP作为SAP系统的开发语言,开发人员需要掌握其语法和特性,例如数据类型、变量声明、循环语句、条件语句等。这些知识将帮助开发人员编写高效且可靠的pp模块程序。 3. 理解生产计划数据结构:pp模块涉及的数据结构较为复杂,包括物料清单、工艺路线、生产订单等。开发人员需要了解这些数据结构的组成和关系,以便能够正确地读取和处理这些数据。 4. 开发报表和界面程序:PP模块通常需要输出各种类型的报表,如生产订单报表、工序报表等。开发人员需要根据用户需求设计和开发这些报表,并保证它们的准确性和易用性。 5. 数据验证和错误处理:在pp模块开发中,数据的准确性和可靠性非常重要。开发人员需要编写适当的代码来验证用户输入的数据,并能够处理各种可能的错误情况,以保证系统的稳定性和可靠性。 总之,ABAP开发在pp模块中需要掌握相关的知识和技术,包括pp模块的基础知识、ABAP语言特性、数据结构、报表和界面开发以及数据验证和错误处理等方面。只有掌握这些要点,才能够开发出高质量和高效率的pp模块程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值