ABAP cl_http_client REST-PATCH方法

2020-09-21 11:22发布

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

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


你好社区,

希望有人可以帮助我。

我需要与外部API通信。 我将类cl_http_client用于方法POST,DELETE,GET。 现在,我需要使用PATCH方法更改客户数据。 不支持PUT。

呼叫方法cl_http_client => create_by_url
导出
url = lv_url
导入
客户端= lo_http
例外情况
arguments_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4。

调用方法lo_http-> request-> set_version(
if_http_request => co_protocol_version_1_0)。

呼叫方法lo_http-> request-> if_http_entity〜set_content_type
导出
content_type ='application/json; charset = utf-8'。

呼叫方法lo_http-> request-> set_header_field
导出
名称='授权'
值='4711'。

lv_length = strlen(lv_body)。
调用方法lo_http-> request-> set_cdata
导出
data = lv_body
偏移量= 0
长度= lv_length。

呼叫方法lo_http-> request-> set_method('PATCH')。

lo_http-> send(
例外情况
http_communication_failure = 1
http_invalid_state = 2)。

lo_http-> receive(
例外情况
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3)。

lv_response = lo_http-> response-> get_cdata()。

主要问题是,有人为类cl_http_client使用了PATCH方法吗?

还是有另一种解决方法?

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

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


你好社区,

希望有人可以帮助我。

我需要与外部API通信。 我将类cl_http_client用于方法POST,DELETE,GET。 现在,我需要使用PATCH方法更改客户数据。 不支持PUT。

呼叫方法cl_http_client => create_by_url
导出
url = lv_url
导入
客户端= lo_http
例外情况
arguments_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4。

调用方法lo_http-> request-> set_version(
if_http_request => co_protocol_version_1_0)。

呼叫方法lo_http-> request-> if_http_entity〜set_content_type
导出
content_type ='application/json; charset = utf-8'。

呼叫方法lo_http-> request-> set_header_field
导出
名称='授权'
值='4711'。

lv_length = strlen(lv_body)。
调用方法lo_http-> request-> set_cdata
导出
data = lv_body
偏移量= 0
长度= lv_length。

呼叫方法lo_http-> request-> set_method('PATCH')。

lo_http-> send(
例外情况
http_communication_failure = 1
http_invalid_state = 2)。

lo_http-> receive(
例外情况
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3)。

lv_response = lo_http-> response-> get_cdata()。

主要问题是,有人为类cl_http_client使用了PATCH方法吗?

还是有另一种解决方法?

付费偷看设置
发送
4条回答
Violet凡
1楼-- · 2020-09-21 11:53

解决方案!

cl_http_client => create_by_destination(
EXPORTING
目标= iv_dest"逻辑目标(在函数调用中指定)
IMPORTING
client = lo_http_client" HTTP客户抽象
EXCEPTIONS
arguments_not_found = 1
destination_not_found = 2
destination_no_authority = 3
plugin_not_active = 4
internal_error = 5
OTHERS = 6
)。

创建对象lo_rest_client
导出
io_http_client = lo_http_client。

lo_http_client-> request-> set_version(if_http_request => co_protocol_version_1_0)。

压缩lv_url NO-GAPS。


cl_http_utility => set_request_uri(
导出
request = lo_http_client-> request" HTTP Framework(iHTTP)HTTP Request
uri = lv_url" URI字符串(以/path?query的形式 -string)
)。

*设置有效负载或正文(JSON或XML)
lo_request = lo_rest_client-> if_rest_client〜create_request_entity()。 (iv_name =`授权`iv_value = lv_token)。
lo_request-> set_string_data(lv_body)。

*对CL_REST_HTTP_CLIENT类的增强-方法PATCH

lo_rest_client->补丁(lo_request)。


*收集响应
lo_response = lo_rest_client-> if_rest_client〜get_response_entity()。
lv_response = lo_response-> get_string_data()

x

x

x

CL_REST_HTTP_CLIENT类中的编码方法PATCH

send_receive(iv_http_method ='PATCH'io_entity = io_entity)。

shere_lin
2楼-- · 2020-09-21 11:35

问题/问题是...?

shere_lin
3楼-- · 2020-09-21 11:39

哦,对不起,它没有用!

例如方法POST

呼叫方法lo_http-> request-> set_method(CO_REQUEST_METHOD_POST)。


主要问题是,有人为类cl_http_client使用了PATCH方法吗?

哎,真难
4楼-- · 2020-09-21 11:46

很好! :-)

CL_REST_HTTP_CLIENT-PATCH是您的"增强方法"吗?

顺便说一句,有 IF_REST_MESSAGE- GC_METHOD_PATCH 常量,但它没有像其他常量那样使用:

 CL_REST_HTTP_CLIENT

 方法:
 IF_REST_RESOURCE〜POST
 send_receive(iv_http_method = if_rest_message => gc_method_post io_entity = io_entity)。

 IF_REST_RESOURCE〜PUT
 send_receive(iv_http_method = if_rest_message => gc_method_put io_entity = io_entity)。

 ...但不是〜PATCH 

一周热门 更多>