ABAP 访问OData 服务

*&---------------------------------------------------------------------*
*& Report YN_HTTPTEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT YN_HTTPTEST.


FORM FRM_CALL_WEBAPI USING IV_JSON_INPUT IV_SERVICE_URL CHANGING EV_JSON_OUTPUT.


  DATA: LO_HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT,
        GV_JSON_OUT    TYPE STRING,
        LV_URL         TYPE STRING,
        LV_LEN         TYPE I.

  LV_URL = IV_SERVICE_URL.

  "创建客户端请求
  CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
    EXPORTING
      URL                = LV_URL
    IMPORTING
      CLIENT             = LO_HTTP_CLIENT
    EXCEPTIONS
      ARGUMENT_NOT_FOUND = 1
      PLUGIN_NOT_ACTIVE  = 2
      INTERNAL_ERROR     = 3
      OTHERS             = 4.
  IF SY-SUBRC <> 0.
    "lv_subrc = sy-subrc.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH
               SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    EXIT.
  ENDIF.

  "设定传输请求内容格式以及编码格式
  LO_HTTP_CLIENT->REQUEST->SET_CONTENT_TYPE( CONTENT_TYPE = 'application/json; charset=utf-8' ).

  "设定调用服务
  LO_HTTP_CLIENT->REQUEST->SET_METHOD( IF_HTTP_REQUEST=>CO_REQUEST_METHOD_POST ).

  "设置待传输内容长度
  LV_LEN = STRLEN( IV_JSON_INPUT ).

  "设置调用方法
  CALL METHOD LO_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~request_method'
      VALUE = 'POST'.
  "设置传入字符串
  CALL METHOD LO_HTTP_CLIENT->REQUEST->SET_CDATA
    EXPORTING
      DATA   = IV_JSON_INPUT
      OFFSET = 0
      LENGTH = LV_LEN.
  "发送数据
  LO_HTTP_CLIENT->SEND(
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2 ).
  "接收返回
  LO_HTTP_CLIENT->RECEIVE(
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3 ).
  "提取返回字符串
  EV_JSON_OUTPUT = LO_HTTP_CLIENT->RESPONSE->GET_CDATA( ).
  "将字符串中的回车符替换,否则abap将会识别为#
  REPLACE ALL OCCURRENCES OF REGEX '\n' IN EV_JSON_OUTPUT WITH SPACE.

ENDFORM.

DATA : GV_SERVICE_URL TYPE STRING VALUE 'http://192.168.2.247:8129/api/TestMail',
       GV_JSON_IN     TYPE STRING VALUE '{"SMessage": "SAP发送的消息1111111", "SSubject": "SAP发送的主题111111111"}',
       GV_JSON_OUT    TYPE STRING.

START-OF-SELECTION.
  "调用webapi
  PERFORM FRM_CALL_WEBAPI USING GV_JSON_IN GV_SERVICE_URL CHANGING GV_JSON_OUT.

END-OF-SELECTION.
  WRITE GV_JSON_OUT.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
postman 是一款流行的 API 测试工具,用于发送 HTTP 请求并测试 API 的响应。通过 postman,我们可以方便地访问 ABAP OData 服务。 首先,我们需要在 postman 中创建一个新的请求。我们可以选择 GET、POST、PUT、DELETE 或其他 HTTP 方法来发送请求。对于 ABAP OData,通常使用 GET 方法来获取数据,POST 方法用于创建新数据,PUT 方法用于更新数据,DELETE 方法用于删除数据。 接下来,我们要设置请求的 URL。ABAP OData 服务的 URL 通常由两部分组成:服务基 URL 和 OData 实体集的名称。服务基 URL 是 ABAP OData 服务的根 URL,它包含了服务的名称、域以及 SAP 系统的主机名和端口号。OData 实体集的名称是我们希望访问的数据集合的名称。 在 postman 的请求设置中,我们需要添加请求头信息,其中包括 Content-Type 和 Accept。Content-Type 表示请求的主体以及响应的格式。对于 ABAP OData,通常使用 application/json 格式。Accept 表示希望接收的响应格式,也通常是 application/json。 除了请求头信息,我们还可以在请求中添加查询参数。查询参数用于过滤、排序和分页等操作。ABAP OData 服务支持常见的查询参数,如 $filter、$orderby、$skip 和 $top。通过在 URL 中添加这些查询参数,我们可以对返回的数据进行筛选、排序和分页。 最后,我们发送请求并获得响应。postman 会显示请求的状态码、响应头、响应体等信息。我们可以根据这些信息来分析请求是否成功,并查看返回的数据。 总之,通过 postman,我们可以方便地访问 ABAP OData 服务,并进行数据的获取、创建、更新和删除等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值