DATA:pv_http_client TYPE REF TO if_http_client,
pv_url TYPE string.
1.可以通過URL連接或者IP:端口連接,根據(jù)實際情況而定,
建議使用URL,省去地址服務(wù)器域名轉(zhuǎn)換
"URL接連
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = pv_url
IMPORTING
client = pv_http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH
sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
"IP地址鏈接
CALL METHOD cl_http_client=>create
EXPORTING
host = p_host "IP
service = p_port "端口
-
SCHEME = '1'
-
PROXY_HOST = ''
-
PROXY_SERVICE = '' IMPORTING client = pv_http_client.
CHECK pv_http_client IS NOT INITIAL.
pv_http_client->propertytype_logon_popup = pv_http_client->co_disabled.
"HTTP - > header
CALL METHOD pv_http_client->request->set_header_field
EXPORTING
name = ‘~request_method’
value = ‘POST’.
CALL METHOD pv_http_client->request->set_header_field
EXPORTING
name = ‘~server_protocol’
value = ‘HTTP/1.1’.
"HTTP -> 密碼
CALL METHOD pv_http_client->authenticate
EXPORTING
" PROXY_AUTHENTICATION = 'X'
username = gv_account "用戶名
password = gv_password."密碼
"數(shù)據(jù)創(chuàng)建及驗證
CALL METHOD pv_http_client->request->set_header_field
EXPORTING
name = ‘Content-Type’
value = ‘a(chǎn)pplication/x-www-form-urlencoded’."變量根據(jù)實際情況調(diào)整
CALL METHOD pv_http_client->request->set_form_field
EXPORTING
name = ‘sip_appkey’
value = ‘www.baidu.com’.
CALL METHOD pv_http_client->request->set_form_field
EXPORTING
name = ‘sip_timestamp’
value = lv_sip_timestamp.
CALL FUNCTION ‘ZFM_GET_MD5’
EXPORTING
iv_string = lv_password
IMPORTING
ev_md5 = lv_password_md5.
lv_md5_all = ‘nea@burgeon.com.cn’ && lv_sip_timestamp && lv_password_md5.
“https://blog.csdn.net/FQHX_116/article/details/126255335?spm=1001.2014.3001.5502 詳解MD5加密
CALL FUNCTION ‘ZFM_GET_MD5’”
EXPORTING
iv_string = lv_md5_all
IMPORTING
ev_md5 = lv_md5_all.
CALL METHOD pv_http_client->request->set_form_field
EXPORTING
name = ‘sip_sign’
value = lv_md5_all.
CALL METHOD pv_http_client->request->set_form_field
EXPORTING
name = ‘transactions’
value = pv_datastr.
"JSON傳輸
CALL METHOD gv_http_client->request->set_header_field
EXPORTING
name = ‘Content-Type’
value = ‘a(chǎn)pplication/json’.
"數(shù)據(jù)轉(zhuǎn)JSON格式
CALL METHOD cl_fdt_json=>data_to_json
EXPORTING
ia_data = et_data
RECEIVING
rv_json = ev_datastr.
"發(fā)送JSON
CALL METHOD gv_http_client->request->set_header_field
EXPORTING
name = ‘~request_uri’
value = gv_url.
"獲取JSON長度->也可以不設(shè)置
gv_len = strlen( gv_datastr ).
CALL METHOD gv_http_client->request->set_cdata
EXPORTING
data = gv_datastr
offset = 0
length = gv_len.
"數(shù)據(jù)發(fā)送HTTP接口
"發(fā)送請求
pv_http_client->send( EXCEPTIONS http_communication_failure = 1
http_invalid_state = 2 ).
IF sy-subrc <> 0.
"操作失敗,獲取失敗原因
pv_http_client->get_last_error( IMPORTING message = pv_resultmsg ).
ELSE.
"讀取遠程服務(wù)返回的處理過結(jié)果。
pv_http_client->receive( EXCEPTIONS http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3 ).
IF sy-subrc <> 0 .
pv_http_client->get_last_error( IMPORTING message = pv_resultmsg ).
ELSE.
"讀取返回返回內(nèi)容
pv_resultmsg = pv_http_client->response->get_cdata( ).
"獲取HTTP返回值
pv_http_client->response->get_status( IMPORTING code = pv_status ).
ENDIF.
ENDIF.
"解析返回JSON
TRY.
CALL METHOD /ui2/cl_json=>deserialize
EXPORTING
json = pv_resultmsg
CHANGING
data = lt_ztdsoms_return.
CATCH cx_sy_move_cast_error.
ENDTRY.
"關(guān)閉HTTP鏈接----重要必須要關(guān)閉,不然或?qū)е翲TTP請求過多倒是系統(tǒng)DUMP
IF pv_http_client IS NOT INITIAL.
CALL METHOD pv_http_client->close.
ENDIF.
"獲取JAVA時間戳----如果需要可以使用
CONVERT DATE sy-datlo TIME sy-timlo
INTO TIME STAMP time TIME ZONE sy-zonlo.
lv_tstmp1 = time.
lv_tstmp2 = ‘19700101000000’.
TRY.
CALL METHOD cl_abap_tstmp=>subtract
EXPORTING
tstmp1 = lv_tstmp1
tstmp2 = lv_tstmp2
RECEIVING
r_secs = lv_secs.
CATCH cx_parameter_invalid_range .
CATCH cx_parameter_invalid_type .
ENDTRY.
lc_secs = lv_secs.文章來源:http://www.zghlxwxcb.cn/news/detail-410999.html
CONDENSE lc_secs NO-GAPS.文章來源地址http://www.zghlxwxcb.cn/news/detail-410999.html
到了這里,關(guān)于ABAP:調(diào)用HTTP接口詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!