使用ABAP的基于REST的服务

2020-09-21 18:35发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我的要求是在ABAP中使用REST服务。 我编写了以下程序,但不是获取JSON结果,而是获取页面的HTML。 有人可以让我知道我要去哪里了。

lv_url =

cl_http_client => create_by_url(
导出
url = lv_url
proxy_host =' proxy.khof.com '
proxy_service ='8080'

导入
客户端= lo_http_client
例外情况
arguments_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4)。
如果sy-subrc <>0。
返回。
ENDIF。


* HTTP基本认证
lo_http_client-> propertytype_logon_popup = lo_http_client-> co_disabled。
l_username = <用户名>。
l_password =''。
呼叫方法lo_http_client-> authenticate < br>导出
用户名= l_用户名
密码= l_密码。


*创建REST客户端实例
创建对象lo_rest_client
导出
io_http_client = lo_http_client。


*设置HTTP版本
lo_http_client-> request-> set_version(if_http_request => co_protocol_version_1_0)。
如果lo_http_client IS BOUND和lo_rest_client IS BOUND。
DATA(id)='securityUserName = &domain = S1'。
CONCATENATE lv_url'?' id INTO lv_url。
*设置URI(如果有的话)
cl_http_utility => set_request_uri(
EXPORTING
request = lo_http_client-> request" HTTP Framework(iHTTP)HTTP Request
uri = lv_url" URI 字符串(以/path?query-string形式)
)。
*设置请求标头(如果有)

令牌=

调用方法lo_rest_client -> if_rest_client〜set_request_header
导出
iv_name ='auth-token'
iv_value =令牌。
* HTTP GET
lo_rest_client-> if_rest_client〜get()。

* HTTP响应
lo_response = lo_rest_client-> if_rest_client〜get_response_entity()。

* HTTP返回状态
DATA(http_status)= lo_response-> get_header_field('〜status_code')。
< br> * HTTP JSON返回字符串
DATA(json_response)= lo_response-> get_string_data()。
*用于将JSON转换为ABAP结构的类
DATA lr_json_deserializer TYPE REF到cl_trex_json_deserializer。
创建对象 lr_json_deserializer。
* lr_json_deserializer-> deseri alize(EXPORTING json = json_response IMPORTING abap = abap_response)。
ENDIF。


         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我的要求是在ABAP中使用REST服务。 我编写了以下程序,但不是获取JSON结果,而是获取页面的HTML。 有人可以让我知道我要去哪里了。

lv_url =

cl_http_client => create_by_url(
导出
url = lv_url
proxy_host =' proxy.khof.com '
proxy_service ='8080'

导入
客户端= lo_http_client
例外情况
arguments_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4)。
如果sy-subrc <>0。
返回。
ENDIF。


* HTTP基本认证
lo_http_client-> propertytype_logon_popup = lo_http_client-> co_disabled。
l_username = <用户名>。
l_password =''。
呼叫方法lo_http_client-> authenticate < br>导出
用户名= l_用户名
密码= l_密码。


*创建REST客户端实例
创建对象lo_rest_client
导出
io_http_client = lo_http_client。


*设置HTTP版本
lo_http_client-> request-> set_version(if_http_request => co_protocol_version_1_0)。
如果lo_http_client IS BOUND和lo_rest_client IS BOUND。
DATA(id)='securityUserName = &domain = S1'。
CONCATENATE lv_url'?' id INTO lv_url。
*设置URI(如果有的话)
cl_http_utility => set_request_uri(
EXPORTING
request = lo_http_client-> request" HTTP Framework(iHTTP)HTTP Request
uri = lv_url" URI 字符串(以/path?query-string形式)
)。
*设置请求标头(如果有)

令牌=

调用方法lo_rest_client -> if_rest_client〜set_request_header
导出
iv_name ='auth-token'
iv_value =令牌。
* HTTP GET
lo_rest_client-> if_rest_client〜get()。

* HTTP响应
lo_response = lo_rest_client-> if_rest_client〜get_response_entity()。

* HTTP返回状态
DATA(http_status)= lo_response-> get_header_field('〜status_code')。
< br> * HTTP JSON返回字符串
DATA(json_response)= lo_response-> get_string_data()。
*用于将JSON转换为ABAP结构的类
DATA lr_json_deserializer TYPE REF到cl_trex_json_deserializer。
创建对象 lr_json_deserializer。
* lr_json_deserializer-> deseri alize(EXPORTING json = json_response IMPORTING abap = abap_response)。
ENDIF。


付费偷看设置
发送
2条回答
My梦
1楼-- · 2020-09-21 18:44

第一个问题:您得到2xx结果代码吗?
我遇到的情况是结果是HTML页面,因为我得到了404 :)
第二个问题:您正在调用的服务是否具有选择返回有效载荷的参数?

Baoming ROSE
2楼-- · 2020-09-21 18:53

感谢您的回复。 HTTP状态为200。

该服务具有两个参数securityUserName和domain,当我们在浏览器上运行该服务时,它们会显示为输入字段。

一周热门 更多>