HTTPS
https://archive.sap.com/discussions/thread/482084
Note 510007
SAP Kernel版本为721 SAP ECC 6.0 SAP_BASIS700
调用公司的https还是不行 500 Native SSL error 不行
调用https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=132*********
REPORT ZTEST040. DATA: LV_URL TYPE STRING, HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT, RETURN_STR TYPE STRING, LV_START TYPE I, LV_END TYPE I, LV_PARAM TYPE STRING, LV_BODY TYPE STRING, LV_LEN TYPE I . data: L_PHONE(20), L_STR TYPE STRING, str_in type STRING, str_out type STRING. data: wf_proxy type string , wf_port type string . "HTTP str_in = '你猜'. "在abap中调用url时,先要对url中的汉字转码ASCII CALL METHOD cl_http_utility=>escape_url EXPORTING unescaped = str_in RECEIVING escaped = str_out. CONCATENATE '/weather_mini?city=' str_out INTO LV_PARAM. call method cl_http_client=>create exporting host = 'wthrcdn.etouch.cn' service = '80' scheme = '1' "http proxy_host = wf_proxy proxy_service = wf_port importing client = http_client. HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_ENABLED . CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD EXPORTING NAME = '~request_method' VALUE = 'GET'. CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD EXPORTING NAME = '~server_protocol' VALUE = 'HTTP/1.1'. "host后的url call method http_client->request->set_header_field exporting name = '~request_uri' value = LV_PARAM. CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD EXPORTING NAME = 'Content-Type' VALUE = 'application/json'. * "set body * CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA * EXPORTING * DATA = LV_PARAM * OFFSET = 0 * LENGTH = LV_LEN. * "get the param of url----没用 * clear LV_PARAM. * CALL METHOD HTTP_CLIENT->REQUEST->GET_URI_PARAMETER * EXPORTING * NAME = 'city' * RECEIVING * VALUE = LV_PARAM. CALL METHOD HTTP_CLIENT->SEND EXCEPTIONS HTTP_COMMUNICATION_FAILURE = 1 HTTP_INVALID_STATE = 2. CALL METHOD HTTP_CLIENT->RECEIVE EXCEPTIONS HTTP_COMMUNICATION_FAILURE = 1 HTTP_INVALID_STATE = 2 HTTP_PROCESSING_FAILED = 3. * 获取返回的数据 RETURN_STR = HTTP_CLIENT->RESPONSE->GET_CDATA( ). if RETURN_STR is INITIAL. write: /'用cl_http_client=>create方法:' ,/ 'faild'. else. write: /'用cl_http_client=>create方法:' ,/ RETURN_STR. endif. CALL METHOD HTTP_CLIENT->CLOSE. CONCATENATE 'http://wthrcdn.etouch.cn/weather_mini' '?' 'city=' str_out INTO LV_URL. "URL填全部,带参数 CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL EXPORTING URL = LV_URL IMPORTING CLIENT = HTTP_CLIENT. HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_ENABLED . CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD EXPORTING NAME = '~request_method' VALUE = 'GET'. CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD EXPORTING NAME = '~server_protocol' VALUE = 'HTTP/1.1'. CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD EXPORTING NAME = 'Content-Type' VALUE = 'application/json'. " text/html 看情况填 * "set body * CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA * EXPORTING * DATA = LV_PARAM * OFFSET = 0 * LENGTH = LV_LEN. CALL METHOD HTTP_CLIENT->SEND EXCEPTIONS HTTP_COMMUNICATION_FAILURE = 1 HTTP_INVALID_STATE = 2. CALL METHOD HTTP_CLIENT->RECEIVE EXCEPTIONS HTTP_COMMUNICATION_FAILURE = 1 HTTP_INVALID_STATE = 2 HTTP_PROCESSING_FAILED = 3. * 获取返回的数据 RETURN_STR = HTTP_CLIENT->RESPONSE->GET_CDATA( ). if RETURN_STR is INITIAL. write: /'用CL_HTTP_CLIENT=>CREATE_BY_URL方法:' ,/ 'faild'. else. write: /'用CL_HTTP_CLIENT=>CREATE_BY_URL方法:' ,/ RETURN_STR. endif. CALL METHOD HTTP_CLIENT->CLOSE. call method cl_http_client=>create exporting host = 'www.baifubao.com' service = '443' scheme = '2' "https SSL_ID = 'ANONYM' proxy_host = wf_proxy proxy_service = wf_port importing client = http_client. HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_ENABLED . CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD EXPORTING NAME = '~request_method' VALUE = 'GET'. CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD EXPORTING * NAME = '~server_protocol' name = '~request_protocol' VALUE = 'HTTPS/1.1'. "host后的url call method http_client->request->set_header_field exporting name = '~request_uri' value = '/callback?cmd=1059&callback=phone&&phone=13205334302'. CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD EXPORTING NAME = 'Content-Type' * VALUE = 'application/x-www-form-urlencoded'. VALUE = 'application/json'. * "set body * CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA * EXPORTING * DATA = LV_BODY * OFFSET = 0 * LENGTH = LV_LEN. * "get the param of url----没用 * clear LV_PARAM. * CALL METHOD HTTP_CLIENT->REQUEST->GET_URI_PARAMETER * EXPORTING * NAME = 'city' * RECEIVING * VALUE = LV_PARAM. CALL METHOD HTTP_CLIENT->SEND EXCEPTIONS HTTP_COMMUNICATION_FAILURE = 1 HTTP_INVALID_STATE = 2. CALL METHOD HTTP_CLIENT->RECEIVE EXCEPTIONS HTTP_COMMUNICATION_FAILURE = 1 HTTP_INVALID_STATE = 2 HTTP_PROCESSING_FAILED = 3. * 获取返回的数据 RETURN_STR = HTTP_CLIENT->RESPONSE->GET_CDATA( ). if RETURN_STR is INITIAL. write: /'HTTPS:' ,/ 'faild'. else. write: /'HTTPS:' ,/ RETURN_STR. endif. CALL METHOD HTTP_CLIENT->CLOSE.