SAP ABAP调用HTTP RESTFUL服务 基本认证

1:外围系统提供的接口URL,用户名和密码信息。

2,调用接口

*根据接口参数,定义用于接口序列化和反序列化的数据结构信息。LS_REQUEST,LS_RESPONSE .

*声明HTTP client .

  DATA: O_HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT ..

 LV_REQUEST_URL = LS_CONFIG-URL .

*根据URL创建客户端示例。
  CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
    EXPORTING
      URL                = LV_REQUEST_URL
*     PROXY_HOST         =
*     PROXY_SERVICE      =
*     SSL_ID             =
*     SAP_USERNAME       =
*     SAP_CLIENT         =
*     PROXY_USER         =
*     PROXY_PASSWD       =
*     DO_NOT_USE_CLIENT_CERT = ABAP_FALSE
*     USE_SCC            = ABAP_FALSE
*     SCC_LOCATION_ID    =
    IMPORTING
      CLIENT             = O_HTTP_CLIENT
    EXCEPTIONS
      ARGUMENT_NOT_FOUND = 1
      PLUGIN_NOT_ACTIVE  = 2
      INTERNAL_ERROR     = 3
      PSE_NOT_FOUND      = 4
      PSE_NOT_DISTRIB    = 5
      PSE_ERRORS         = 6
      OTHERS             = 7.
  IF SY-SUBRC <> 0.
    EX_STATUS = 'E' .
    CALL METHOD O_HTTP_CLIENT->GET_LAST_ERROR
      IMPORTING
        MESSAGE = LV_MESSAGE.
    EX_MESSA = LV_MESSAGE .
    RETURN.
  ENDIF.

  LV_USERNAME =  LS_CONFIG-ACCOUNT.
  LV_PASSWORD =  LS_CONFIG-PASSWORD.

*设置用户名密码认证。
  CALL METHOD O_HTTP_CLIENT->AUTHENTICATE
    EXPORTING
*     PROXY_AUTHENTICATION = ' '
*     CLIENT   =
      USERNAME = LV_USERNAME
      PASSWORD = LV_PASSWORD
*     LANGUAGE =
*添加用户名和密码到消息头。
  CALL METHOD O_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'username'
      VALUE = LV_USERNAME.

  CALL METHOD O_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'password'
      VALUE = LV_PASSWORD.
*设置抬头格式。
  CALL METHOD O_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'Content-Type'
      VALUE = 'application/json; charset=utf-8'.
*设置发送方法。
  O_HTTP_CLIENT->REQUEST->SET_METHOD( IF_HTTP_REQUEST=>CO_REQUEST_METHOD_POST ).
*序列化JSON数据。
  LV_REQUEST_STR = /UI2/CL_JSON=>SERIALIZE( DATA = LS_REQUEST ASSOC_ARRAYS = ABAP_TRUE ).
*设置发送数据。
  O_HTTP_CLIENT->REQUEST->IF_HTTP_ENTITY~SET_CDATA( DATA = LV_REQUEST_STR  ) .
*发送请求。
  CALL METHOD O_HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2.
  IF SY-SUBRC <> 0 .
    CALL METHOD O_HTTP_CLIENT->GET_LAST_ERROR
      IMPORTING
        MESSAGE = LV_MESSAGE.
    EX_MESSA = LV_MESSAGE .
    RETURN.
  ENDIF.

*接收反馈消息
  CALL METHOD O_HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.
  IF SY-SUBRC <> 0 .
    CALL METHOD O_HTTP_CLIENT->GET_LAST_ERROR
      IMPORTING
        MESSAGE = LV_MESSAGE.
    EX_MESSA = LV_MESSAGE .
    RETURN.
  ENDIF.
  LV_RESPONSE_STR = O_HTTP_CLIENT->RESPONSE->GET_CDATA( ).
*反序列化数据。
  /UI2/CL_JSON=>DESERIALIZE( EXPORTING JSON = LV_RESPONSE_STR ASSOC_ARRAYS = ABAP_TRUE  CHANGING DATA = LS_RESPONSE ).
 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值