为满足业务需求再接在abap中直接调用HTTP服务,获取相应数据进行处理
1.获取URL
2.创建http客户端及设置HTTP相应参数(版本编码等)
3.调用发送方法
4调用接受方法
5.提取字符串,及转成自己想要的内表数据
以下代码可以直接使用,只修改url,和自己定义对应的内表即可
DATA: url TYPE string, "接口地址
lv_msg TYPE string, "接口地址
http_client TYPE REF TO if_http_client, "http客户端
result TYPE xstring.
url = 'http://*****'."http的url
"创建http客户端
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = url
IMPORTING
client = http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
lv_msg = '创建客户端失败'.
RETURN.
ENDIF.
"设置HTTP 版本
http_client->request->set_version( if_http_request=>co_protocol_version_1_0 ).
"设定传输请求内容格式以及编码格式
http_client->request->set_content_type( content_type = 'application/json; charset=utf-8' ).
"设置http method 为Get
http_client->request->set_method( if_http_request=>co_request_method_get ).
"阻止用户名和密码输入的对话框弹出
http_client->propertytype_logon_popup = if_http_client=>co_disabled.
"发送
CALL METHOD http_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
http_invalid_timeout = 4
OTHERS = 5.
IF sy-subrc <> 0.
lv_msg = '请求发送失败'.
RETURN.
ENDIF.
"接受
CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
IF sy-subrc <> 0.
lv_msg = '数据接受失败'.
RETURN.
ENDIF.
CLEAR result.
"提取返回字符串
result = http_client->response->get_data( ).
DATA iv_jsonstr TYPE string.
CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
EXPORTING
im_xstring = result
im_encoding = 'UTF-8'
IMPORTING
ex_string = iv_jsonstr.
"xstring 转string 得到Json数据
CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
EXPORTING
im_xstring = result
im_encoding = 'UTF-8'
IMPORTING
ex_string = iv_jsonstr.
"定义和json数据一样字段的内表
TYPES:BEGIN OF ty_data,
name TYPE string,
size TYPE string,
lastmodified TYPE string,
fname TYPE ze_recriptfilename,
time TYPE zefi_filemodtime,
END OF ty_data.
data:lt_data type standard table of ty_data.
"json转内表
/ui2/cl_json=>deserialize( EXPORTING json = iv_jsonstr CHANGING data = lt_data ). "获取


4060

被折叠的 条评论
为什么被折叠?



