在ABAP中通过HTTPS下载Excel文件

问题描述 投票:0回答:1

我正在使用 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 中的参数

看起来像

https://example.com/sap/crp/cdo?type=CRP_L&list=36&$ge$contract_signed_date=20240401&$product_group_id=XYZ&chart_display=true&chart_type=line&csv=X

contract_signed_date 和 Product_group_id 是过滤器参数,最后一个参数 csv=X 是指示服务器将报告导出为 Excel 电子表格输出

在后台下载 Excel 文件时,浏览器显示空白 html 正文作为响应

现在我只能使用 CL_HTTP_CLIENT 客户端和 lo_http_client->response->get_data( ) 获取这个空白 html 正文作为响应

如何捕获后台静默下载的Excel文件?

希望我能够很好地解释...请告诉我

abap
1个回答
0
投票

也许你忘记调用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.
© www.soinside.com 2019 - 2024. All rights reserved.