一、SE24创建类:Z_HCX_HTTP
1、创建类:
2、切换到接口(interface)页签,输入IF_HTTP_EXTENSION ,回车。切换到方法(method)页签,双击IF_HTTP_EXTENSION~HANDLE_REQUEST进入代码编辑界面。
3、在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: <fs_field> 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行数