上次说了sender REST的配置,今天来探讨下receiver的配置。
需求背景:服务方API对请求有特殊需求,如http header里固定传某些值,可能为动态。请求中需要包含签名字段sign和时间戳timestamp,都放进header中,sign使用sha256加密算法。
sha256加密算法
需要中要求将header中的参数以及body中的一级字段拼接后进行加密,这样就涉及到body中的表数据转化为json。
1、 表数据转化为json
因为body中的结构可能为多级套表,首先将要转化的数据结构化,SE11创建结构和表类型
对其进行赋值后,使用如下语句生成json
lv_json = /ui2/cl_json=>serialize( EXPORTING data = lt_data pretty_name = /ui2/cl_json=>pretty_mode-camel_case )
其中,lt_data为表数据,pretty_name会将表字段的名字格式化,比如APP_ID,会被转为appId,字母变为小写,下划线代表shift功能,将下划线后的第一个字母大写。
1、 加密方法
按要求将要加密的字符串编辑好后,使用下面的方法进行sha256加密
TRY.
cl_abap_message_digest=>calculate_hash_for_char(
EXPORTING
if_algorithm = 'SHA256'