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 .