http_client-> receive - SAP ABAP中的内部服务器错误

时间:2017-11-17 07:46:36

标签: asp.net-web-api request response abap

我创建了一个功能模块,用于执行第三方网页并获得响应。

以下是代码

    FUNCTION zmm_url_http_get_post.
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(P_URL) TYPE  STRING OPTIONAL
*"  EXPORTING
*"     VALUE(P_RESPONSE) TYPE  STRING
*"  TABLES
*"      T_LOG STRUCTURE  VIFE OPTIONAL
*"  EXCEPTIONS
*"      ERROR_MESSAGE
*"----------------------------------------------------------------------
  DATA : lv_value TYPE string.
  DATA : http_client TYPE REF TO if_http_client 
  DATA : lv_url TYPE string.
  DATA : return TYPE char2048
  DATA : lv_err_string TYPE string,
         lv_ret_code   TYPE sy-subrc.
* Build Url
  lv_url = p_url.
* Create Client
  CALL METHOD cl_http_client=>create_by_url
    EXPORTING
      url    = lv_url
    IMPORTING
      client = http_client.
* Send
  CALL METHOD http_client->send
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2.
* Receive
  CALL METHOD http_client->receive
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3.
  IF sy-subrc NE 0.
    http_client->response->get_status(
      IMPORTING
        code   = lv_ret_code
        reason = lv_err_string
           ).
    MESSAGE lv_err_string TYPE 'I'.
    t_log-msgty = 'E'.
    t_log-msgtx = lv_err_string.
    APPEND t_log.
  ENDIF.
* Now we have the response , parse , display
* do what you like
  return = http_client->response->get_cdata( ).
  p_response = return.
  IF t_log-msgty NE 'E'.
    t_log-msgty = 'S'.
    t_log-msgtx = 'Success'.
    APPEND t_log.
  ENDIF.
ENDFUNCTION.

我已经创建了后台作业来每天执行此代码。后台作业正在成功执行,但我面临的问题是某些时候作业状态是成功有时候作业状态被取消,我得到的日志是内部服务器错误作业取消后系统异常ERROR_MESSAGE

当我在Web浏览器中执行相同的URL时,响应没有任何服务器间错误,我是否需要进行一些配置,SAP是否会增加Max执行时间?

任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我不认为目标服务器始终可用/可访问(网络质量差,服务器过载等)。

也许实施某种"重试策略"(有时间间隔)来处理这种失败(例如HTTP 503)?