403禁止,cl_http_client => create_by_destination

2020-09-26 20:43发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

在POST OData服务时出错。 似乎X-CSRF-Token无效。

呼叫方法cl_http_client => create_by_destination
     出口
       目的地='BPMODATA'
     输入
       客户端= lo_http_client。

  *第2步:-填充标题并为GET方法设置URI 

   lv_uri ='bpmodata/startprocess.svc/test.com/test〜process〜bpm/Purchase_Group/StartData'。

   呼叫方法cl_http_utility => set_request_uri
     出口
       请求= lo_http_client->请求
       uri = lv_uri。

   *设置内容类型 
   呼叫方法lo_http_client-> request-> set_content_type
     出口
       content_type ='application/json'。

  * *设置用于获取X-CSRF令牌的标头字段


    呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称='X-CSRF-令牌'
       值="提取"。

   呼叫方法lo_http_client-> request-> set_method
     出口
       方法= lo_http_client-> request-> co_request_method_get。

 *步骤3:-触发GET方法

   lo_http_client->发送(
  例外情况
    http_communication_failure = 1
    http_invalid_state = 2)。

   lo_http_client-> receive(
     例外情况
       http_communication_failure = 1
       http_invalid_state = 2
       http_processing_failed = 3)。

   调用方法lo_http_client-> response-> get_header_field
     出口
       名称='X-CSRF-令牌'
    接收
     值= l_token。

  *步骤4:-填充HTTP POST方法的标头和正文

 呼叫方法lo_http_client-> request-> set_header_field
   出口
     名称='X-CSRF-令牌'
     值= l_token。

  呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="缓存控制"
       值="无缓存"。

   呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="连接"
       值="保持活动状态"。

   呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="接受语言"
       值='en-US,en; q = 0.8'。

   呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="接受"
       值='application/json'。

   呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="内容类型"
       值='application/json'。

 呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="接受编码"
       值='gzip,放气'。


 呼叫方法lo_http_client-> request-> set_method
   出口
     方法= lo_http_client-> request-> co_request_method_post。

    呼叫方法lo_http_client-> request-> get_header_fields
      改变
        字段= lt_hdrs。 标题字段


   *为HTTP Post请求创建正文 

 l_body ='{" ProcessStartEvent":{" :: StartBPM":{" PurchaseGroup_StartBPM":{" Request_Id":" 901"," Country":" IN"}}}}}'。

 呼叫方法lo_http_client-> request-> set_cdata
   出口
     数据= l_body。

 调用方法lo_http_client-> request-> get_cdata
   接收
     数据= lv_getcdata

 lo_http_client->发送(
     例外情况
       http_communication_failure = 1
       http_invalid_state = 2)。

 *"发送HTTP请求
 lo_http_client-> receive(
   例外情况
     http_communication_failure = 1
     http_invalid_state = 2 http_processing_failed = 3)。

 *"收到回应

 lv_result = lo_http_client-> response-> get_cdata()。

    调用方法lo_http_client-> response-> get_header_fields
     改变
        字段= lt_hdrsresponse。 标题字段

 

获取403禁止错误。 请求您的帮助。

预先感谢

Aisurya

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

在POST OData服务时出错。 似乎X-CSRF-Token无效。

呼叫方法cl_http_client => create_by_destination
     出口
       目的地='BPMODATA'
     输入
       客户端= lo_http_client。

  *第2步:-填充标题并为GET方法设置URI 

   lv_uri ='bpmodata/startprocess.svc/test.com/test〜process〜bpm/Purchase_Group/StartData'。

   呼叫方法cl_http_utility => set_request_uri
     出口
       请求= lo_http_client->请求
       uri = lv_uri。

   *设置内容类型 
   呼叫方法lo_http_client-> request-> set_content_type
     出口
       content_type ='application/json'。

  * *设置用于获取X-CSRF令牌的标头字段


    呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称='X-CSRF-令牌'
       值="提取"。

   呼叫方法lo_http_client-> request-> set_method
     出口
       方法= lo_http_client-> request-> co_request_method_get。

 *步骤3:-触发GET方法

   lo_http_client->发送(
  例外情况
    http_communication_failure = 1
    http_invalid_state = 2)。

   lo_http_client-> receive(
     例外情况
       http_communication_failure = 1
       http_invalid_state = 2
       http_processing_failed = 3)。

   调用方法lo_http_client-> response-> get_header_field
     出口
       名称='X-CSRF-令牌'
    接收
     值= l_token。

  *步骤4:-填充HTTP POST方法的标头和正文

 呼叫方法lo_http_client-> request-> set_header_field
   出口
     名称='X-CSRF-令牌'
     值= l_token。

  呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="缓存控制"
       值="无缓存"。

   呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="连接"
       值="保持活动状态"。

   呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="接受语言"
       值='en-US,en; q = 0.8'。

   呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="接受"
       值='application/json'。

   呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="内容类型"
       值='application/json'。

 呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称="接受编码"
       值='gzip,放气'。


 呼叫方法lo_http_client-> request-> set_method
   出口
     方法= lo_http_client-> request-> co_request_method_post。

    呼叫方法lo_http_client-> request-> get_header_fields
      改变
        字段= lt_hdrs。 标题字段


   *为HTTP Post请求创建正文 

 l_body ='{" ProcessStartEvent":{" :: StartBPM":{" PurchaseGroup_StartBPM":{" Request_Id":" 901"," Country":" IN"}}}}}'。

 呼叫方法lo_http_client-> request-> set_cdata
   出口
     数据= l_body。

 调用方法lo_http_client-> request-> get_cdata
   接收
     数据= lv_getcdata

 lo_http_client->发送(
     例外情况
       http_communication_failure = 1
       http_invalid_state = 2)。

 *"发送HTTP请求
 lo_http_client-> receive(
   例外情况
     http_communication_failure = 1
     http_invalid_state = 2 http_processing_failed = 3)。

 *"收到回应

 lv_result = lo_http_client-> response-> get_cdata()。

    调用方法lo_http_client-> response-> get_header_fields
     改变
        字段= lt_hdrsresponse。 标题字段

 

获取403禁止错误。 请求您的帮助。

预先感谢

Aisurya

付费偷看设置
发送
1条回答
SAP浪
1楼-- · 2020-09-26 21:12

您真的在POST上获取了403,还是已经在GET上获取了403? 也许BPM服务器上的路径未激活。

您可以通过外部REST客户端(例如Postman或类似产品)复制错误吗?

一周热门 更多>