• SAP之Http Rest接口发布


    一、SE24创建类:Z_HCX_HTTP

    1、创建类:

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

    IF_HTTP_EXTENSION~HANDLE_REQUEST方法编写代码:

    1. METHOD if_http_extension~handle_request.
    2. DATA: BEGIN OF ls_data,
    3. matnr TYPE matnr,
    4. maktx TYPE maktx,
    5. END OF ls_data.
    6. DATA: lt_data LIKE TABLE OF ls_data.
    7. DATA: lt_fields TYPE tihttpnvp.
    8. FIELD-SYMBOLS: <fs_field> LIKE LINE OF lt_fields.
    9. DATA: lv_method TYPE string. "获取GET/POST方式
    10. DATA: lv_json TYPE string, "返回参数
    11. lv_json1 TYPE string, "获取传回值数据
    12. lv_json2 TYPE string. "获取传回值数据
    13. * 获取JSON抬头数据
    14. server->request->get_header_fields(
    15. CHANGING
    16. fields = lt_fields
    17. ).
    18. lv_method = server->request->get_header_field( name = '~request_method' )."获取GET/POST方式
    19. CALL METHOD server->response->if_http_entity~set_content_type
    20. EXPORTING
    21. content_type = 'application/json'.
    22. CASE lv_method.
    23. WHEN 'GET'.
    24. * 获取数据
    25. SELECT matnr maktx INTO CORRESPONDING FIELDS OF TABLE lt_data
    26. FROM makt
    27. UP TO 20 ROWS.
    28. * 内表转换JSON
    29. CALL METHOD /ui2/cl_json=>serialize
    30. EXPORTING
    31. data = lt_data
    32. RECEIVING
    33. r_json = lv_json.
    34. * 将行数据JSON返回给调用端
    35. server->response->set_cdata(
    36. EXPORTING
    37. data = lv_json
    38. ).
    39. server->response->set_status( code = 200 reason = 'OK' ).
    40. WHEN 'POST'.
    41. * 获取JSON行数据
    42. lv_json1 = server->request->if_http_entity~get_cdata( ).
    43. * 解析json至内表方法1
    44. /ui2/cl_json=>deserialize( EXPORTING json = lv_json1
    45. CHANGING data = ls_data ).
    46. IF NOT lv_json1 IS INITIAL.
    47. * 获取数据
    48. SELECT matnr maktx INTO CORRESPONDING FIELDS OF TABLE lt_data
    49. FROM makt
    50. UP TO 20 ROWS
    51. where matnr = ls_data-matnr.
    52. * 内表转换json
    53. CALL METHOD /ui2/cl_json=>serialize
    54. EXPORTING
    55. data = lt_data
    56. RECEIVING
    57. r_json = lv_json.
    58. * 将行数据JSON返回给调用端
    59. server->response->set_cdata(
    60. EXPORTING
    61. data = lv_json
    62. ).
    63. ENDIF.
    64. LOOP AT lt_fields INTO DATA(ls_fields).
    65. CASE ls_fields-name.
    66. WHEN 'lt_data'.
    67. lv_json2 = ls_fields-value.
    68. ENDCASE.
    69. ENDLOOP.
    70. * 解析json至内表方法1
    71. /ui2/cl_json=>deserialize( EXPORTING json = lv_json2
    72. CHANGING data = lt_data ).
    73. IF NOT lv_json2 IS INITIAL.
    74. * 将行数据JSON返回给调用端
    75. server->response->set_cdata(
    76. EXPORTING
    77. data = 'SoapUi传参已收到'
    78. ).
    79. ENDIF.
    80. server->response->set_status( code = 200 reason = 'OK' ).
    81. ENDCASE.
    82. ENDMETHOD.

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

    1、创建子元素:

    之后点击保存。

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

    3、获取URL调用地址:

    直接打开默认是GET请求:

    但是像企业微信这样的第三方访问时,该URL不是真正的URL,找BASIS要URL。

    在Postman 中测试post请求:

    在SoapUI 中测试post请求:

  • 相关阅读:
    基于JAVA后台的微信垃圾分类小程序系统 开题报告
    kafka学习问题
    再次理解Android账号管理体系
    Linux安全加固
    linux服务器之间文件传输
    千变万化的Promise
    在线教育行业介绍
    模电课程设计
    Java实习生常规技术面试题每日十题Java基础(五)
    干洗店上门洗护小程序开发,互联网洗鞋店软件
  • 原文地址:https://blog.csdn.net/ki_laikun/article/details/125370066