使用 SAP ABAP 从区块链服务获取证明历史记录

by | 29月2019日,XNUMX | ABAP 程序, 全面、

首页 » 树液 » ABAP » ABAP 程序 » 使用 SAP ABAP 从区块链服务获取证明历史记录

前言 – 这篇文章是的一部分 SAP Cloud Platform 上的区块链 ABAP 程序 系列。

在此步骤中,我们将使用在上一步中存储的令牌再次调用区块链服务。 然后我们将从区块链接收交易历史。

方法 get_proof_history。
 数据:lo_http_client 类型参考 if_http_client。
 DATA:响应 TYPE 字符串、lv_url TYPE 字符串、lv_auth TYPE 字符串、lv_auth2 TYPE 字符串。
 常量:lv_initial_url 类型字符串值' '。
 如果 iv_object_id 不是初始值。
 *** 获取令牌类型:BEGIN OF t_entry、access_token TYPE string、token_type TYPE string、expires_in TYPE n LENGTH 8、scope TYPE string、jti TYPE string、END OF t_entry。
 类型:t_entry_map 具有唯一键 access_token 的 t_entry 类型排序表。
 数据:m_entries 类型 t_entry。
 数据:lr_instance 类型参考 /ui5/cl_json_parser。
 创建对象 lr_instance。
 CALL METHOD me->get_token。
 如果 gv_token 不是初始值。
 * 数据:itab 类型表字符串。
 * 数据:access_tok 类型字符串。
 * 在 '"' INTO TABLE itab 处拆分 gv_token。
 * 尝试。
 * lv_auth2 = itab[4]。
 * 捕捉 cx_sy_itab_line_not_found。
 * 结束。
 /ui2/cl_json=>反序列化(导出 json = gv_token pretty_name = /ui2/cl_json=>pretty_mode-camel_case 更改数据 = m_entries)。
 lv_auth2 = m_entries-access_token。
 gv_token = gv_token+17。
 CONCATENATE 'Bearer' lv_auth2 INTO lv_auth 以空格分隔。
 万一。
 数据 lv_object_id 类型字符串。
 lv_object_id = iv_object_id。
 将 lv_object_id 转换为小写。
 将 lv_initial_url lv_object_id 连接到 lv_url。  “附加修复 URL 和对象 ID 以获取请求 URL”通过 url CALL METHOD 创建 HTTP 客户端 cl_http_client=>create_by_url EXPORTING url = lv_url IMPORTING client = lo_http_client EXCEPTIONS argument_not_found = 1 plugin_not_active = 2 internal_error = 3 OTHERS = 4。
 “可用的 API 端点” https://blockchain-service.cfapps.sap.hana.ondemand.com/blockchain/proofOfHistory/api/v1 “https://blockchain-service.cfapps.eu10.hana.ondemand.com/blockchain /proofOfHistory/api/v1 "https://blockchain-service.cfapps.us10.hana.ondemand.com/blockchain/proofOfHistory/api/v1 IF sy-subrc <> 0。
 “错误处理 ENDIF。
 "设置请求方法 lo_http_client->request->set_method('GET')。
 "创建 Auth 值 * lv_auth2 = '基本'。
 “添加标题 * lo_http_client->request->set_header_field( name = 'Content-Type' value = 'application/x-www-form-urlencoded' )。
 lo_http_client->request->set_header_field(name = 'Accept' value = 'application/json')。
 lo_http_client->request->set_header_field(name = 'Authorization' value = lv_auth)。
 * lo_http_client->request->set_header_field(名称='APIKey'值='zBoCpDtkaT9jexRjtMk0J98Rs8izmQi1')。
 “生产性 API 端点的可用安全方案”OAuth 2.0 CALL METHOD lo_http_client->send EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 http_invalid_timeout = 4 OTHERS = 5。
 如果 sy-subrc = 0。
 调用方法 lo_http_client->receive 异常 http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 其他 = 5。
 万一。
 如果 sy-subrc = 1。
 “错误处理 ev_response = 'http_communication_failure'。
 ELSEIF sy-subrc = 2。
 ev_response = 'http_invalid_state'。
 ELSEIF sy-subrc = 3。
 ev_response = 'http_processing_failed'。
 ELSEIF sy-subrc = 0。
 响应 = lo_http_client->响应->get_cdata()。
 *写:'响应:',响应。
 ev_response = 响应。
 别的。
 ev_response = '未知错误'。
 万一。
 万一。

 

作者

0条评论

提交评论

您的电邮地址不会被公开。 必填带 *

本网站使用Akismet来减少垃圾邮件。 了解您的数据如何处理.

作者