关于sap:如何使用-ABAP-代码消费需要传递-CSRF-token-的-OData-服务试读版

4次阅读

共计 2344 个字符,预计需要花费 6 分钟才能阅读完成。

正如本教程的开篇介绍文章 SAP OData 开发教程 – 从入门到进步 (蕴含 SEGW, RAP 和 CDP) 所提到的,SAP OData 服务开发,从实现技术上来说,能够分为三大类。因而本教程也分为三大部分,别离进行介绍。本文是本教程的文章目录。

作者简介

Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后退出 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达 15 年的 SAP 规范产品开发生涯里,Jerry 已经先后参加 SAP Business ByDesign, SAP CRM, SAP Cloud for Customer, SAP S/4HANA, SAP Commerce Cloud(电商云)等规范产品的研发工作。

Jerry 对 SAP OData 服务的开发,测试,公布,部署,测试,及基于各种不同 SAP 技术实现的 OData 服务的幕后技术实现细节和应用场合,均有着深刻的钻研。

基于 SEGW – Gateway Service Builder 的开发教程

  • 1. 在 SAP ABAP 事物码 SEGW 里创立 SAP OData 我的项目
  • 2. 在 SAP ABAP 系统对事物码 SEGW 创立的 OData 服务进行配置并测试
  • 3. SAP ABAP OData 服务诊断工具 /IWFND/ERROR_LOG 的应用办法
  • 4. SAP ABAP OData 服务 Data Provider Class 的 GET_ENTITYSET 办法实现指南
  • 5. SAP ABAP OData 服务如何反对 $filter (过滤)操作
  • 6. 应用 Postman 工具高效治理和测试 SAP ABAP OData 服务
  • 7. SAP ABAP OData 服务如何反对 $orderby (排序)操作
  • 8. SAP ABAP OData 服务如何反对创立 (Create) 操作
  • 9. SAP ABAP OData 服务如何反对删除 (Delete) 操作
  • 10. SAP ABAP OData 服务如何反对批改 (Update) 操作
  • 11. 应用 HTTP PUT, PATCH 以及 MERGE 申请生产 SAP ABAP OData 服务批改操作的实现及其区别
  • 12. SAP ABAP OData 服务如何反对 $select 有选择性地仅读取局部模型字段值
  • 13. SAP ABAP OData 服务的分页加载数据集的实现(Paging)
  • 14. 几种 SAP ABAP OData 服务的性能评估和测试工具介绍
  • 15. SAP ABAP OData 服务里 EntityType 和 EntitySet 的区别
  • 16. 如何批改 SAP ABAP OData 模型,使其反对 $expand 操作
  • 17. 如何通过 SAP ABAP OData $expand 操作在同一个 HTTP 申请中返回多个节点的数据
  • 18. SAP ABAP OData 服务嵌套创立性能的实现步骤(Create Deep)
  • 19. 如何应用 ABAP 程序生产 SAP ABAP OData 服务
  • 20. 如何应用 ABAP 代码生产须要传递 CSRF token 的 OData 服务
  • 更多文章正在写作中,敬请期待

应用 Restful ABAP Programming 编程模型(简称 RAP) 开发 OData 服务

  • 正在写作中,敬请期待

应用 SAP Cloud Application Programming 编程模型开发 OData 服务

  • 正在写作中,敬请期待

本教程的前一步骤,咱们应用 ABAP 代码,生产了咱们本人开发的 OData 服务。

拜访的 url 如下:

https://{{host}}:{{port}}/sap/opu/odata/sap/ZBOOK_MANAGE_SRV/BookSet(guid'42010aee-2a94-1edd-8494-c9d14e91555e')

这个 url 因为是简略的 HTTP GET 进行的读取操作,所以生产的时候,不须要在 HTTP 申请的头部字段里,传递 CSRF token 值。

本步骤咱们持续学习一个简单一点的场景,咱们冀望用 ABAP 代码触发一个 OData 服务的批改操作,应用的 HTTP 申请类型为 PUT. 因为波及到业务数据的批改操作,所以 OData 服务协定规定,在提交这个批改操作时,HTTP 申请的头部字段,须要蕴含一个名叫 x-csrf-token 的字段,值为从 ABAP 服务器申请的 CSRF token 值。

对于这个数据批改的更多操作,参考本教程之前的步骤:

  • 10. SAP ABAP OData 服务如何反对批改 (Update) 操作
  • 11. 应用 HTTP PUT, PATCH 以及 MERGE 申请生产 SAP ABAP OData 服务批改操作的实现及其区别

简略地说,咱们在 ABAP 代码里,须要实现的步骤,和咱们在 Postman 里的操作完全一致。

首先应用 ABAP 代码,获取 CSRF token.

残缺代码参考这篇文章。

申请 CSRF token 的代码,同前一步骤通过 ABAP 代码调用 OData 服务的读取操作相比,一个区别就是,咱们须要在 HTTP 申请的头部字段里,减少一个名叫 x-csrf-token 的字段,值为 fetch.

这样,咱们能够利用 get_header_field 办法,从 HTTP 响应头部字段里,获取名叫 x-csrf-token 字段的值,也就是服务器返回的 CSRF token,如下图调试器里所示。

紧接着进入程序的第二局部,新建第二个 if_http_client 实例,调用该实例向服务器发送第二个 HTTP PUT 申请,同时应用刚刚从服务器端取得的 CSRF token,作为 HTTP 头部字段 x-csrf-token 的值。

第二局部的代码如下。

两局部编写结束,执行报表,在最初一行,从服务器失去的响应,竟然是 CSRF token validation failed

这就让人很费解了,为什么咱们将 第一个 HTTP 申请 ,从服务器获取的 CSRF token,立刻传递给了 第二个 HTTP 申请 的头部字段,为什么依然遇到 CSRF token 验证失败的谬误音讯呢?

问题剖析及解决方案在这里。

正文完
 0