定制小程序开发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 ).
 

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发