前言 – 这篇文章是的一部分 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条评论