• ABAP-HTTP支持


     SAP Web Application Server -> Internet Communication  Framework. 


     http://help.sap.com/saphelp_nw70/helpdata/EN/36/020d3a0154b909e10000000a114084/frameset.htm

     

    CLIENT端发出请求到HTTP Server端流程:
    1. 创建CL_HTTP_CLIENT 实例 
       a>  CL_HTTP_CLIENT=>CREATE  
         必需参数:

        HOST (host name),  

        SERVICE (port),   

        PROXY_HOST (host name of the proxy host),   

        PROXY_SERVICE (port of the proxy host)

        SCHEME (specifies whether HTTP or HTTPS should be used; has the default value “SCHEMETYPE_HTTP”).

        you can use the parameter SSL_ID to specify appropriate SSL  certificates. 


        b> CL_HTTP_CLIENT=>CREATE_BY_DESTINATION 必须在事务SM59中设置HTTP 

        destination, 具体参考Connection Establishment Using Destination (SM59). 

        http://help.sap.com/saphelp_nw70/helpdata/EN/da/11df3a9b10355ae10000000a11405a/content.htm

        另外也可能会需要设置proxy for client,事务:SICF. 

      

       c>CL_HTTP_CLIENT=>CREATE_BY_URL. 

    2.生成的客户端请求的属性REQUEST被请求数据所填充. 


    3.调用方法SEND发出request, 


    4.任务处理器与ICM(Internet Communication Manager)发出请求到目标HTTP server.


    5.如果目标HTTP Server需要授权的话,可能会弹出 SAP logon or the HTTP standard,(5,6,7,8.) 它是在方法RECIVE中执行的,也可禁止登录对话框,设置IF_HTTP_CLIENT~PROPERTYTYPE_LOGON_POPUP的值为CO_DISABLED. 另外还可以设置是否允许REDIRECT,及已在系统设置的PROXY.可以调用方法 SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background:#FFFFFF; } authenticate 来设置用户名密码。

    6.HTTP Server生成RESPONSE并发送回来.当我们执行方法RECEIVE时,返回数据填充在CLIENT实例的RESPONSE属性中. 


    7.返回数据被处理或显示.也可以把返回数据传送到HTML contorl中. 


    8.数据被显示后,调用方法CLOSE连接被关闭.为了避免资源浪费,注意应当关闭连接. 注意一旦被关闭,不能再访问Request和Response对象.

       
     重要的相关接口 
    1. IF_HTTP_CLIENT 

      CL_HTTP_CLIENT是其实现. 有两个属性IF_HTTP_REQUEST and  IF_HTTP_RESPONSE 对应于the HTTP request and HTTP response 数据.  采用方法LISTEN可以并行处理多个请求.

    2. IF_HTTP_RESPONSE 与IF_HTTP_REQUEST

      两者都用在SERVER与CLIENT端,它们都是IF_HTTP_ENTITY的增强,用来访问数据,提供了一些功能用来访问HTTP header,与HTTP body, 

      a>IF_HTTP_ENTITY提供了一些方法对 Header Fields(GET_HEADER_FIELD() / GET_HEADER_FIELDS(),  SET_HEADER_FIELD() and SET_HEADER_FIELDS() ),

      IF_HTTP_HEADER_FIELDS中有经常用到的header fields,  Form Fields, Cookies, HTTP Body Data, HTTP Multipart Data 


       b>在IF_HTTP_RESPONSE中提供了一些如 

      GET_STATUS       获取目前设置的HTTP 状态码.

      REDIRECT         转发到另外的URL,ICM端的缓存

      COPY         复制RESPONSE对象 

      GET_RAW_MESSAGE  获取完整的 HTTP message SERVER_CACHE_BROWSER_DEPENDENT 在服务端缓存设置浏览器特定的HTML的返回。 
     

      c>在IF_HTTP_REQUEST中提供了一些方法设置授权方法的方法,

      GET_AUTHORIZATION    Provides information from the authorization header field 

      SET_AUTHORIZATION    Sets the authorization header field for the request

      GET_FORM_DATA         将所有的数据放入到一个复杂的数据结构中.

      COPY                     复制请求对象 
      
    3. IF_HTTP_UTILITY 

     提供了一些DECODE_BASE64方法来解密, ENCODE_BASE64加密 ESCAPE_HTML  ESCAPE_URL UNESCAPE_URL 对转义字符进行处理. STRING_TO_FIELDS FIELDS_TO_STRING 查询字符串与一系列字段间转换 SET_QUERY设置查询语句。

  • 相关阅读:
    bzoj2748:[HAOI2012]音量调节
    bzoj2287:[POJ Challenge]消失之物
    bzoj1485:[HNOI2009]有趣的数列
    Codeforces 620E New Year Tree
    CF813E Army Creation
    527D.Clique Problem
    4337: BJOI2015 树的同构
    Codeforces Round #443 (Div. 1) C. Tournament
    [BZOJ4913][SDOI2017]遗忘的集合
    [八省联考2018]林克卡特树lct
  • 原文地址:https://www.cnblogs.com/ricoo/p/10131384.html
Copyright © 2020-2023  润新知