方法参数定义如下
源代码如下
method qxb_http_get.
data:lv_url type string.
"===============初始化===============================================
"获取http实例
cl_http_client=>create_by_destination(
exporting
destination = space
importing
client = data(lo_client)
).
"设置请求方法为Get(也可通过post实现)
lo_client->request->set_method( if_http_request=>co_request_method_get ).
"设置get方法query string
lv_url = method.
"=====================查询条件=======================================
"从SO10文本对象获取维护好的密钥,也可以直接写死
data(lv_appkey) = zcl_common_fm=>read_so10(
iv_name = conv tdobname( space )
).
"appkey访问密钥
lo_client->append_field_url(
exporting
name = conv string( 'appkey')
value = lv_appkey
changing
url = lv_url
).
"特定查询条件
loop at filter_tab into data(ls_filter).
lo_client->append_field_url(
exporting
name = ls_filter-name
value = ls_filter-value
changing
url = lv_url
).
endloop.
cl_http_utility=>set_request_uri(
exporting
request = lo_client->request
uri = lv_url " URI String (in the Form of /path?query-string)
).
"设置请求抬头信息
lo_client->request->set_version( if_http_request=>co_protocol_version_1_1 ).
"=================发送请求并接受响应============================
lo_client->send( ).
lo_client->receive( ).
lo_client->response->get_status(
importing
code = data(lv_response_code)
reason = data(lv_response_reson)
).
code = conv char3( lv_response_code ).
if lv_response_code ne 200.
RAISE api_error.
return.
endif.
data(lv_response_data) = lo_client->response->get_data( ).
lo_client->close( ).
"================处理返回结果============================
data(lv_json_string) = cl_abap_codepage=>convert_from( lv_response_data ).
result = lv_json_string.
endmethod.