SAP的代码向www发送http请求的过程

时间:2024-04-09 13:02:23

SAP的代码向www发送http请求,这句话像是在搞笑一样。但是仔细想想我们随便打开个浏览器访问个网址,就是在向www发送http请求,这有什么搞笑的呢?SAP既是应用也是开发环境,对外发送个http请求是很正常的。
那么SAP的http请求代码如何写呢?下面是一个例子:

   "实例化1个 IF_HTTP_CLIENT 的对象得到HTTP_CLIENT
    CL_HTTP_CLIENT=>CREATE_BY_URL(
               EXPORTING URL    = S_URL                "输入参数
               IMPORTING CLIENT = HTTP_CLIENT ).

    "设置某个特定的header field的值
    HTTP_CLIENT->REQUEST->SET_HEADER_FIELD(
            EXPORTING
                 NAME  = '~SERVER_PROTOCOL'
                 VALUE = 'HTTP/1.1' ).

    "设置某个特定的header field的值
    CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
      EXPORTING
        NAME  = 'CONTENT-TYPE'
        VALUE = 'APPLICATION/XML'.

    "设置某个特定的header field的值
    HTTP_CLIENT->REQUEST->SET_HEADER_FIELD(
          EXPORTING
               NAME  = 'ACCEPT'
               VALUE = '*/*' ).
    "设置http请求的方法GET 或者 POST
    CALL METHOD HTTP_CLIENT->REQUEST->SET_METHOD( 'POST' ).
    "设置http body
    CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
      EXPORTING
        DATA = S_BODYDATA.                             "输入参数
   "dispatch of data
    CALL METHOD HTTP_CLIENT->SEND
      EXCEPTIONS
        HTTP_COMMUNICATION_FAILURE = 1
        HTTP_INVALID_STATE         = 2.
    "receipt of http response
    CALL METHOD HTTP_CLIENT->RECEIVE
      EXCEPTIONS
        HTTP_COMMUNICATION_FAILURE = 1
        HTTP_INVALID_STATE         = 2
        HTTP_PROCESSING_FAILED     = 3.
    "获取response中的http的body内容
    S_RETURN = HTTP_CLIENT->RESPONSE->GET_CDATA( ).  "执行结果
    "关闭http链接
    CALL METHOD HTTP_CLIENT->CLOSE.

上述代码是不是很枯燥?是
这是sap中abap代码的规范写法?逻辑是什么呢?
我觉得,sap的pa教材和官方help网站中并没有这样微观的给出,sap向www发送http请求的具体代码的规范,并没有。
我们还是逐句看看上述代码的含义吧。

  1. CL_HTTP_CLIENT=>CREATE_BY_URL()方法
    在SE80中看到这个类的这个方法,右键查看这个方法的属性

SAP的代码向www发送http请求的过程
SAP的代码向www发送http请求的过程
看到上图,就相当于看到了java的api
我们再看看这个类本身的属性:这个类完全是SAP提供的
SAP的代码向www发送http请求的过程
SAP的代码向www发送http请求的过程
这个方法的输入参数是
SAP的代码向www发送http请求的过程
方法的执行结果是得到了一个IF_HTTP_CLIENT对象的实例。