ABAP HTTP API:CL_HTTP_CLIENT, create_by_url 有一个输入参数 SSL_ID, 类型为 SSFAPPLSSL, 这个参数应该传什么值进去呢?
打开事物码 STRUST, 菜单 Environment -> SSL Client Identifies:
查到一个 ID 为:ANONYM
我们看这张架构图:
上图 CL_HTTP_CLIENT 实例的创建,是通过调用以下方法之一完成的:CL_HTTP_CLIENT=>CREATE、CL_HTTP_CLIENT=>CREATE_BY_DESTINATION 或 CL_HTTP_CLIENT=>CREATE_BY_URL。
这个对象实例在这里被称为客户端控制块(类似于服务器控制块)。 发送请求的 ABAP 应用程序调用该方法。
注意第2、3、5、6、7、11、12和13点的活动也必须由ABAP应用程序触发,即调用相应的方法。 因此,ABAP 应用程序使用类 CL_HTTP_CLIENT 的组件,以便它可以生成请求数据并处理响应数据。
如果要调用方法 CL_HTTP_CLIENT=>CREATE,该方法必须有以下信息:HOST(主机名)、SERVICE(端口)、PROXY_HOST(代理计算机的主机名)、PROXY_SERVICE(代理计算机的端口)和 SCHEME(输入是使用 HTTP 还是 HTTPS;默认值 ‘SCHEMETYPE_HTTP’)。 如果您使用 SSL 协议 (‘SCHEMETYPE_HTTPS’) 进行通信,则可以使用参数 SSL_ID 指定适当的 SSL 证书。 如果要使用这些证书登录 ABAP 应用程序服务器,则可以使用 SAP_USERNAME 和 SAP_CLIENT 指定所需的附加信息。
如果要调用方法 CL_HTTP_CLIENT=>CREATE_BY_DESTINATION,则必须在事务 SM59 中为 HTTP 目标(节点 HTTP 连接到 ABAP 系统或 HTTP 连接到 Ext. Server)创建相应的条目。
系统中有一个用于进行代理设置的中央配置环境。 要访问它,请调用事务 SICF 并选择客户端 -> 代理设置。
生成的客户端控制块通过使用所需的请求数据填充属性请求来填充 (2)。
然后使用方法 SEND (3) 发送请求。 为此,打开连接并将请求转换为 HTTP 数据流(序列化)。
任务处理程序和 Internet 通信管理器用于将请求发送到所需的 HTTP 服务器 (4)。
如果 HTTP 服务器需要身份验证(例如,如果服务器也是 SAP 系统),客户端现在必须登录 (5,6,7,8。如果服务器也是 SAP 系统,客户端通过 SAP登录弹出。否则,客户端通过HTTP标准弹出登录。在方法RECEIVE中执行查询是使用SAP登录弹出还是HTTP标准弹出(参见6)。如果您不想要登录对话框,您可以通过为属性 IF_HTTP_CLIENT~PROPERTYTYPE_LOGON_POPUP 指定值 CO_DISABLED 来禁用它。