栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SAP之Http Rest接口发布 <转载>

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SAP之Http Rest接口发布 <转载>

原文链接:https://zhuanlan.zhihu.com/p/382501506
一、SE24创建类:Z_HCX_HTTP

1、创建类:



2、切换到接口(interface)页签,输入IF_HTTP_EXTENSION ,回车。切换到方法(method)页签,双击IF_HTTP_EXTENSION~HANDLE_REQUEST进入代码编辑界面。


在IF_HTTP_EXTENSION~HANDLE_REQUEST方法编写代码:

 METHOD if_http_extension~handle_request.
     DATA: BEGIN OF ls_data,
             matnr TYPE matnr,
             maktx TYPE maktx,
           END OF ls_data.
     DATA: lt_data LIKE TABLE OF ls_data.

     DATA: lt_fields TYPE tihttpnvp.
     FIELD-SYMBOLS:  LIKE LINE OF lt_fields.

     DATA: lv_method TYPE string. "获取GET/POST方式
     DATA: lv_json  TYPE string,  "返回参数
           lv_json1 TYPE string,  "获取传回值数据
           lv_json2 TYPE string.  "获取传回值数据


*    获取JSON抬头数据
     server->request->get_header_fields(
         CHANGING
           fields = lt_fields
       ).
     lv_method = server->request->get_header_field( name = '~request_method' )."获取GET/POST方式
     CALL METHOD server->response->if_http_entity~set_content_type
       EXPORTING
         content_type = 'application/json'.

     CASE lv_method.
       WHEN 'GET'.
*        获取数据
         SELECt matnr maktx INTO CORRESPONDING FIELDS OF TABLE lt_data
           FROM makt
           UP TO 20 ROWS.

*        内表转换JSON
         CALL METHOD /ui2/cl_json=>serialize
           EXPORTING
             data   = lt_data
           RECEIVING
             r_json = lv_json.

*        将行数据JSON返回给调用端
         server->response->set_cdata(
           EXPORTING
             data   = lv_json
         ).

         server->response->set_status( code = 200 reason = 'OK' ).
       WHEN 'POST'.
*        获取JSON行数据
         lv_json1 = server->request->if_http_entity~get_cdata( ).
*        解析json至内表方法1
         /ui2/cl_json=>deserialize( EXPORTING json = lv_json1
                                     CHANGING data = ls_data ).
         IF NOT lv_json1 IS INITIAL.
*          获取数据
           SELECt matnr maktx INTO CORRESPONDING FIELDS OF TABLE lt_data
             FROM makt
             UP TO 20 ROWS
             where matnr = ls_data-matnr.
*         内表转换json
           CALL METHOD /ui2/cl_json=>serialize
             EXPORTING
               data   = lt_data
             RECEIVING
               r_json = lv_json.
*        将行数据JSON返回给调用端
           server->response->set_cdata(
             EXPORTING
               data   = lv_json
           ).
         ENDIF.

         LOOP AT lt_fields INTO DATA(ls_fields).
           CASE ls_fields-name.
             WHEN 'lt_data'.
               lv_json2 = ls_fields-value.
           ENDCASE.
         ENDLOOP.
*        解析json至内表方法1
         /ui2/cl_json=>deserialize( EXPORTING json = lv_json2
                                     CHANGING data = lt_data ).

         IF NOT lv_json2 IS INITIAL.
*        将行数据JSON返回给调用端
           server->response->set_cdata(
             EXPORTING
               data   = 'SoapUi传参已收到'
           ).
         ENDIF.
         server->response->set_status( code = 200 reason = 'OK' ).

     ENDCASE.
   ENDMETHOD.

二、使用事务码 SICF 在 default_host/sap 节点下面创建子节点,用 Z_HCX_HTTP 类并激活方法:
1、创建子元素:




之后点击保存。

2、在default_host/sap中找到刚刚创建的子元素:Z_HCX_HTTP激活服务:


3、获取URL调用地址:


直接打开默认是GET请求:

在Postman 中测试post请求(提示401无权限的话就去Authorization页签里维护):

在SoapUI 中测试post请求:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/985110.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号