[ABAP example] SAP calls RESTful API test case

REPORT ZMJ_GETAPI.


DATA: LEN         TYPE        I, "发送报文长度
      LEN_STRING  TYPE        STRING,
      URL         TYPE        STRING, "接口地址
      HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT, "http客户端
      POST_STRING TYPE        STRING,
      RESULT      TYPE        STRING.

DATA: IT_HEADER  TYPE TIHTTPNVP,
      GV_JSON_IN TYPE STRING VALUE '{"IT_INPUT":[{"CUSTOMER":"12345678","PERNR":"00190935"}]}'.


START-OF-SELECTION.
  URL = 'http://10.*.*.*:8001/api_sapnew/ZIF_DATA'.
  "'http://10.X.X.X:8081/api/test/gettest'.

  "创建http客户端
  CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
    EXPORTING
      URL                = URL
    IMPORTING
      CLIENT             = HTTP_CLIENT
    EXCEPTIONS
      ARGUMENT_NOT_FOUND = 1
      PLUGIN_NOT_ACTIVE  = 2
      INTERNAL_ERROR     = 3
      OTHERS             = 4.

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

  "设置http method 为Get
  HTTP_CLIENT->REQUEST->SET_METHOD( IF_HTTP_REQUEST=>CO_REQUEST_METHOD_POST ).
  "IF_HTTP_ENTITY~CO_REQUEST_METHOD_GET

  "设置待传输内容长度
  LEN = STRLEN( GV_JSON_IN ).

  "设置调用方法
  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~request_method'
      VALUE = 'POST'.
  "设置传入字符串
  CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
    EXPORTING
      DATA   = GV_JSON_IN
      OFFSET = 0
      LENGTH = LEN.

  "发送
  CALL METHOD HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3
      HTTP_INVALID_TIMEOUT       = 4
      OTHERS                     = 5.

  "接收
  CALL METHOD HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.

  "提取返回字符串
  RESULT = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
  "将字符串中的回车符替换,否则abap将会识别为#
  REPLACE ALL OCCURRENCES OF REGEX '\n' IN RESULT WITH SPACE.

  "获取接口返回的数据
*  RESULT = HTTP_CLIENT->RESPONSE->GET_CDATA( ).

  WRITE: RESULT.
Published 1976 original articles , received 3818 likes , and visited 10.06 million+