ruby class initilize with hash

本文介绍了一个简单的Ruby类,该类使用`attr_reader`为多个实例变量定义了getter方法,并在初始化过程中通过传递的哈希参数设置这些属性的值。此类可用于快速搭建具有特定属性配置的对象实例。
class Profile
  attr_reader :name, :age, :nationality, :province
  attr_reader :city, :working_place
  
  def initialize args
    args.each do |k,v|
      unless v.nil?
        instance_variable_set("@#{k}", v)
      end
    end
  end
end  

在 SAP ABAP 中发送包含 `sap-client` 和上下文参数的 POST 请求,通常用于访问 SAP 的 Web API 或 OData 服务。这些参数可以作为请求头(Header)或查询参数(Query String)的一部分发送,具体取决于接口的设计要求。以下是两种常见方式的实现方法。 ### 1. 使用 `CL_HTTP_CLIENT` 类发送请求并设置 `sap-client` 请求头 可以通过 `set_header_field` 方法将 `sap-client` 作为 HTTP 请求头字段发送,这种方式适用于大多数 SAP Gateway 服务: ```abap DATA: lo_http_client TYPE REF TO if_http_client, lo_request TYPE REF TO if_http_request, lv_url TYPE string VALUE 'http://your-sap-server/sap/opu/odata/someservice', lv_client TYPE string VALUE '100', " SAP Client Number lv_response TYPE string. " 创建 HTTP 客户端 CALL METHOD cl_http_client=>create_by_url EXPORTING url = lv_url IMPORTING client = lo_http_client. " 获取请求对象 lo_request = lo_http_client->request. " 设置请求方法为 POST lo_request->set_method( if_http_request=>co_request_method_post ). " 设置 sap-client 请求头 lo_request->set_header_field( name = 'sap-client' value = lv_client ). " 设置 Content-Type(根据接口要求调整) lo_request->set_header_field( name = 'Content-Type' value = 'application/json' ). " 设置请求体(根据接口要求设置 JSON 或 XML) lo_request->set_cdata( '{"username":"test","password":"123456"}' ). " 发送请求 CALL METHOD lo_http_client->send. " 接收响应 CALL METHOD lo_http_client->receive. " 获取响应内容 lv_response = lo_http_client->response->get_cdata( ). ``` ### 2. 使用查询字符串传递 `sap-client` 和上下文参数 如果服务端要求将 `sap-client` 作为 URL 查询参数传递,可以在 URL 中拼接: ```abap DATA: lv_url TYPE string. CONCATENATE 'http://your-sap-server/sap/opu/odata/someservice' '?sap-client=100' '&sap-contextid=ABC123' INTO lv_url SEPARATED BY ''. " 创建客户端并发送请求(同上) ``` ### 3. 设置其他上下文参数 上下文参数如 `sap-contextid`、`X-CSRF-Token` 等也可以通过请求头或查询参数的方式传递,具体方式需参考目标接口文档。例如设置 `X-CSRF-Token` 请求头: ```abap lo_request->set_header_field( name = 'X-CSRF-Token' value = 'Fetch' ). ``` ### 注意事项 - 在使用 `CL_HTTP_CLIENT` 时,请确保 SAP 系统配置了正确的 ICM(Internet Communication Manager)和 SICF 服务。 - 若调用 HTTPS 接口,需使用 `ssl_id` 参数并配置 SSL 证书。 - 若接口需要身份验证,应配置 `lo_http_client->property_type_logon_popup = lo_http_client->co_enabled` 或使用预认证机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值