REST FORM DATA HTTP base64 加密

** 1 , REST HTTP**
** 2, JSON**

** 1 , REST HTTP**
FUNCTION zssf_get_bz_token.
*“----------------------------------------------------------------------
"“本地接口:
*” EXPORTING
*” VALUE(EV_TOKEN) TYPE STRING
*"----------------------------------------------------------------------

--------------------------------------------------------------------

  • RFC(SSF->BZ):获取报账Token
    --------------------------------------------------------------------

    "接口返回字段结构
    TYPES:BEGIN OF ty_return_msg,
    access_token TYPE string,
    token_type TYPE string,
    expires_in TYPE int4,
    scope TYPE string,
    END OF ty_return_msg.

    DATA:lv_url TYPE string,
    lr_http_client TYPE REF TO if_http_client,
    lt_form_fields TYPE tihttpnvp,
    ls_form_fields LIKE LINE OF lt_form_fields,
    lv_result TYPE string,
    lr_result TYPE REF TO data,
    ls_return_msg TYPE ty_return_msg.

    CLEAR:lv_url,lr_http_client,lt_form_fields,ls_form_fields,lv_result,lr_result,ls_return_msg.
    加粗样式 base64 加密

    格式: user_no:password
    DATA(lv_passw) = CL_HTTP_UTILITY=>ENCODE_BASE64(‘rest:12345678’) .**

    SELECT SINGLE
    url
    INTO lv_url
    FROM ztssf_032
    WHERE fm_name = ‘ZSSF_GET_BZ_TOKEN’ AND
    sys_id = sy-sysid.

    CHECK lv_url IS NOT INITIAL.

    cl_http_client=>create_by_url(
    EXPORTING
    url = lv_url
    IMPORTING
    client = lr_http_client
    EXCEPTIONS
    argument_not_found = 1
    plugin_not_active = 2
    internal_error = 3
    OTHERS = 4 ).

    lr_http_client->propertytype_logon_popup = lr_http_client->co_disabled.

*&—header
lr_http_client->request->set_header_field(
EXPORTING
name = ‘Authorization’
value = ‘Basic c3lzc3NmOjEyMzQ1Ng’
).

  • lr_http_client->request->set_header_field(

  • EXPORTING

  •  name  = 'Content-Type'
    
  •  value = 'application/x-www-form-urlencoded'
    
  • ).

  • lr_http_client->request->set_header_field(

  • EXPORTING

  •  name  = 'Accept'
    
  •  value = 'application/json, application/x-www-form-urlencoded'
    
  • ).

lr_http_client->request->set_method( ‘POST’ ).

*&—body
ls_form_fields-name = ‘grant_type’.
ls_form_fields-value = ‘client_credentials’.
APPEND ls_form_fields TO lt_form_fields.

  • ls_form_fields-name = ‘client_id’.

  • ls_form_fields-value = ‘sysssf’.

  • APPEND ls_form_fields TO lt_form_fields.

  • ls_form_fields-name = ‘client_secret’.

  • ls_form_fields-value = ‘$2a 10 10 10UByUvns5kgBFDbH2FMK0aOqq5yDYEXshfMxPJCoq85XMlc0ZeYuzW’.

  • APPEND ls_form_fields TO lt_form_fields.

lr_http_client->request->set_form_fields(
EXPORTING
fields = lt_form_fields
).

lr_http_client->send(
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2 ).

lr_http_client->receive(
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3 ).

lv_result = lr_http_client->response->get_cdata( ).
CALL METHOD lr_http_client->close.

*&—解析PM返回的数据
/ui2/cl_json=>deserialize(
EXPORTING
json = lv_result
CHANGING
data = lr_result
).

IF lr_result IS BOUND.
ASSIGN lr_result->* TO FIELD-SYMBOL(<fs_out>).
IF <fs_out> IS ASSIGNED.
ASSIGN COMPONENT ‘access_token’ OF STRUCTURE <fs_out> TO FIELD-SYMBOL(<fs_access_token_ref>).
ASSIGN COMPONENT ‘token_type’ OF STRUCTURE <fs_out> TO FIELD-SYMBOL(<fs_token_type_ref>).
ASSIGN COMPONENT ‘expires_in’ OF STRUCTURE <fs_out> TO FIELD-SYMBOL(<fs_expires_in_ref>).
ASSIGN COMPONENT ‘scope’ OF STRUCTURE <fs_out> TO FIELD-SYMBOL(<fs_scope_ref>).
ENDIF.

IF <fs_access_token_ref> IS ASSIGNED.
  ASSIGN <fs_access_token_ref>->* TO FIELD-SYMBOL(<fs_access_token>).
  IF <fs_access_token> IS ASSIGNED.
    ls_return_msg-access_token = <fs_access_token>.
  ENDIF.
ENDIF.

IF <fs_token_type_ref> IS ASSIGNED.
  ASSIGN <fs_token_type_ref>->* TO FIELD-SYMBOL(<fs_token_type>).
  IF <fs_token_type> IS ASSIGNED.
    ls_return_msg-token_type = <fs_token_type>.
  ENDIF.
ENDIF.

IF <fs_expires_in_ref> IS ASSIGNED.
  ASSIGN <fs_expires_in_ref>->* TO FIELD-SYMBOL(<fs_expires_in>).
  IF <fs_expires_in> IS ASSIGNED.
    ls_return_msg-expires_in = <fs_expires_in>.
  ENDIF.
ENDIF.
IF <fs_scope_ref> IS ASSIGNED.
  ASSIGN <fs_scope_ref>->* TO FIELD-SYMBOL(<fs_scope>).
  IF <fs_scope> IS ASSIGNED.
    ls_return_msg-scope = <fs_scope>.
  ENDIF.
ENDIF.

ENDIF.
ev_token = ls_return_msg-access_token.
ENDFUNCTION.

2 , JSON

DATA: BEGIN OF LS_ZDATA ,
SOURCE_CODE TYPE STRING, " 单据 sourceCode
TOTAL_AMOUNT TYPE STRING, " 金额汇总 totalAmount
PREMIUM_FLAG TYPE STRING, " 是否溢价 premiumFlag
TRANSFER_INFORMATION LIKE TABLE OF LS_TRANSFER,
END OF LS_ZDATA .

解释 : CAMEL_CASE 为驼峰模式 ;

 LV_JSON_IN  = /UI2/CL_JSON=>SERIALIZE(
 DATA =    LS_ZDATA
 COMPRESS = ABAP_FALSE
 PRETTY_NAME = /UI2/CL_JSON=>PRETTY_MODE-CAMEL_CASE )   . 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值