我正在使用 CL_HTTP_CLIENT 并尝试从 ABAP 中的 HTTPS URL 下载 Excel 文件
基本上,URL 指向报告 Web 应用程序的 Excel 导出/下载功能
当我直接在浏览器中输入URL时,它只是在后台开始Excel下载(可以通过点击下载看到)
我无法透露实际的 URL,因为它是内网,但它类似于下面的 URL
https://www.tesourodireto.com.br/data/files/EE/E3/A1/59/6266F610BB8E41E6894D49A8/LFT_2019.xls
上面的链接直接指向现有的静态 Excel 文件,但我所说的 URL 执行“生成报告并将其导出为 Excel 工作表”操作,然后其行为类似于上面的链接。它还允许将生成报告的过滤条件作为 URL 中的参数
看起来像
contract_signed_date 和 Product_group_id 是过滤器参数,最后一个参数 csv=X 是指示服务器将报告导出为 Excel 电子表格输出
在后台下载 Excel 文件时,浏览器显示空白 html 正文作为响应
现在我只能使用 CL_HTTP_CLIENT 客户端和 lo_http_client->response->get_data( ) 获取这个空白 html 正文作为响应
如何捕获后台静默下载的Excel文件?
希望我能够很好地解释...请告诉我
也许你忘记调用http客户端
receive
方法。下面的例子是有效的。
REPORT zmky_http_download.
DATA: lo_client TYPE REF TO if_http_client,
lv_url TYPE string,
lv_response TYPE xstring.
* Set the URL of the endpoint
lv_url = 'https://www.tesourodireto.com.br/data/files/EE/E3/A1/59/6266F610BB8E41E6894D49A8/LFT_2019.xls'.
* Create HTTP client
cl_http_client=>create_by_url( EXPORTING url = lv_url IMPORTING client = lo_client ).
IF lo_client IS BOUND.
TRY.
* Set request parameters
lo_client->request->set_method( 'GET' ).
* * Send the request
lo_client->send( ).
* * Get the response
lo_client->receive( ).
lv_response = lo_client->response->get_data( ).
WRITE: / 'Response:', lv_response.
CATCH cx_root INTO DATA(lx_root).
WRITE: / 'Error:', lx_root->get_text( ).
ENDTRY.
ENDIF.