从ABAP服务器使用基于REST的API

2020-09-16 16:24发布

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

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


大家好,

我需要ABAP方面的外部基于REST的API服务。

我的有效载荷或标头数据的内容将为Base64string。 (文件内容将转换为base64字符串。)

我需要使用cl_http_client => create_by_url,然后使用REST客户端实例,如下所示:

数据:
     l_url TYPE字符串,
     lo_http_client类型参考if_http_client,
     lo_rest_client类型参考cl_rest_http_client,

 l_url ='https://......'。

 呼叫方法cl_http_client => create_by_url
     出口
        网址= l_url
     输入
        客户端= lo_http_client
      例外情况
         arguments_not_found = 1
         plugin_not_active = 2
         internal_error = 3
         其他= 4。

 创建对象lo_rest_client
     出口
         io_http_client = lo_http_client。

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

//转换为JSON。  JSON数据将只有一个带有base64字符串的字段。
 创建对象lo_json_serializer
     出口
         数据= lwa_json_req(工作区)。
 lo_json_serializer-> serialize()。
 l_body = lo_json_serializer-> get_data()。

 lo_request = lo_rest_client-> if_rest_client〜create_request_entity()。
 lo_request-> set_content_type(iv_media_type = if_rest_media_type => gc_appl_json)。
 lo_request-> set_string_data(l_body)。
 lo_rest_client-> if_rest_resource〜post(lo_request)。
 lo_response = lo_rest_client-> if_rest_client〜get_response_entity()。
 

但是上面的代码不起作用。 谁能让我知道如何实现这一目标。

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

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


大家好,

我需要ABAP方面的外部基于REST的API服务。

我的有效载荷或标头数据的内容将为Base64string。 (文件内容将转换为base64字符串。)

我需要使用cl_http_client => create_by_url,然后使用REST客户端实例,如下所示:

数据:
     l_url TYPE字符串,
     lo_http_client类型参考if_http_client,
     lo_rest_client类型参考cl_rest_http_client,

 l_url ='https://......'。

 呼叫方法cl_http_client => create_by_url
     出口
        网址= l_url
     输入
        客户端= lo_http_client
      例外情况
         arguments_not_found = 1
         plugin_not_active = 2
         internal_error = 3
         其他= 4。

 创建对象lo_rest_client
     出口
         io_http_client = lo_http_client。

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

//转换为JSON。  JSON数据将只有一个带有base64字符串的字段。
 创建对象lo_json_serializer
     出口
         数据= lwa_json_req(工作区)。
 lo_json_serializer-> serialize()。
 l_body = lo_json_serializer-> get_data()。

 lo_request = lo_rest_client-> if_rest_client〜create_request_entity()。
 lo_request-> set_content_type(iv_media_type = if_rest_media_type => gc_appl_json)。
 lo_request-> set_string_data(l_body)。
 lo_rest_client-> if_rest_resource〜post(lo_request)。
 lo_response = lo_rest_client-> if_rest_client〜get_response_entity()。
 

但是上面的代码不起作用。 谁能让我知道如何实现这一目标。

付费偷看设置
发送
3条回答
大道至简
1楼-- · 2020-09-16 17:10

这意味着两件事:

  1. 服务器出现问题
  2. 您的有效负载(即请求)具有服务器无法处理的错误数据。

您可以尝试使用邮递员并查看服务器返回的信息。

大简至美
2楼-- · 2020-09-16 16:57

Simone,

我刚刚使用 Postman 插件和 它工作正常。 当我使用上面提到的代码时,它不会通过。 我对此是新手,无法理解是什么导致了此问题。

此致

Samad

奄奄一息的小鱼
3楼-- · 2020-09-16 16:53

检查您的l_body内容并与Postman中的数据进行比较:有时,序列化程序会在Json的'和"之间造成混乱

一周热门 更多>