Created by Jerry Wang on Jun 07, 2014
在browser里输入http url之后,
敲回车之后http自动转换成https:
通过httpwatch观察到有一个307 redirect:
通过tcode SMICM 查看ICM server设置:
发现server设置为所有http的request都会自动redirect成https, port number 44356:
debug下面report能找到redirect具体的处理细节:
data(url) = 'http://<XXXX>:50056/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/zweb_add_2/001/s1/b1?sap-client=001'. data(content) = zcl_crm_cm_tool=>get_text_by_url( conv #( url ) ).
get_text_by_url的方法实现如下:
method GET_TEXT_BY_URL. DATA:lo_http_client TYPE REF TO if_http_client, lv_status TYPE i, lv_sysubrc TYPE sysubrc. CALL METHOD cl_http_client=>create_by_url EXPORTING url = iv_url IMPORTING client = lo_http_client EXCEPTIONS argument_not_found = 1 plugin_not_active = 2 internal_error = 3 OTHERS = 4. ASSERT sy-subrc = 0. CALL METHOD lo_http_client->request->set_method( if_http_request=>co_request_method_get ). *Disable pop-up when request receives unauthorized error: error 401. "lo_http_client->propertytype_logon_popup = if_http_client=>co_disabled. *Send request. CALL METHOD lo_http_client->send EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3. ASSERT sy-subrc = 0. * Get response. CALL METHOD lo_http_client->receive EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3. IF sy-subrc <> 0. CALL METHOD lo_http_client->get_last_error IMPORTING code = lv_sysubrc message = DATA(ev_message). BREAK-POINT. RETURN. ENDIF. ev_text = lo_http_client->response->get_cdata( ). lo_http_client->close( ). endmethod.