CAP-OData API的$ batch请求

2020-08-17 00:44发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我正在尝试对CDS服务公...

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

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


你好

我正在尝试对CDS服务公开的oData api的批量请求。 我正在此示例存储库中针对书店示例测试请求: https://github.com/git-ashish/cloud-cap-samples ,但始终出现以下错误:

 POST/admin/$ batch
 [2020-03-04T12:04:40.503Z | 警告|  1254189]:预计在位置0处的边界
 [2020-03-04T12:04:40.505Z | 警告|  1254189]:标头已发送
 [2020-03-04T12:04:40.505Z | 警告|  1254189]:标头已发送
 [2020-03-04T12:04:40.505Z | 错误|  1254189]:响应数据已经发送,而响应缓冲区中仍有可用数据
 [2020-03-04T12:04:40.505Z | 警告|  1254189]:标头已发送
 [2020-03-04T12:04:40.506Z | 警告|  1254189]:标头已发送
 [2020-03-04T12:04:40.506Z | 错误|  1254189]:响应数据已经发送,而响应缓冲区中仍有可用数据
 

我不确定问题是否与批处理请求的正文形成方式有关。 任何指针都将不胜感激。

请求是:

 curl --location --request POST'http://localhost:4004/admin/$ batch'\
 --header'内容类型:多部分/混合;  boundary = batch_123'\
 --header'授权:基本YXNoaXNoOg =='\
 --data-raw'--batch_123
 内容类型:多部分/混合;边界= changeset_456
 内容传输编码:二进制


 --changeset_456
 内容类型:应用程序/http
 内容传输编码:二进制


 POST/admin/Authors HTTP/1.1
 内容类型:application/json
 内容长度:50
 接受:application/json


 {
     " ID":101,
     "名称":"艾米莉·勃朗特二世"。
 }
 --changeset_456
 内容类型:应用程序/http
 内容传输编码:二进制


 POST/admin/Authors HTTP/1.1
 内容类型:application/json
 内容长度:48
 接受:application/json


 {
     " ID":221,
     "名称":"福尔摩斯"
 }
 --changeset_456--


 --batch_123--'
 

在HTTP中:

 POST/admin/$ batch HTTP/1.1
 主机:localhost:4004
 内容类型:多部分/混合;  boundary = batch_123
 授权:基本YXNoaXNoOg ==


 --batch_123
 内容类型:多部分/混合;边界= changeset_456
 内容传输编码:二进制


 --changeset_456
 内容类型:应用程序/http
 内容传输编码:二进制


 POST/admin/Authors HTTP/1.1
 内容类型:application/json
 内容长度:50
 接受:application/json


 {
     " ID":101,
     "名称":"艾米莉·勃朗特二世"。
 }
 --changeset_456
 内容类型:应用程序/http
 内容传输编码:二进制


 POST/admin/Authors HTTP/1.1
 内容类型:application/json
 内容长度:48
 接受:application/json


 {
     " ID":221,
     "名称":"福尔摩斯"
 }
 --changeset_456--


 --batch_123--
 
4条回答
樱桃小丸子0093
2020-08-17 01:18

感谢您的后续评论和详细信息,塞巴斯蒂安!

我正在Mac OS上工作,并使用Postman和cURL来测试api。 为了确保使用CRLF,我使用了VS Code,并确保将行尾序列设置设置为CRLF。

在第一个边界上加上\ r \ n后,我现在遇到以下错误:

 {
     "错误":{
         " code":" null",
         " message":"处理多部分数据需要更多数据"
     }
 } 

要针对确切的查询进行测试,请使用以下cURL:

 curl --location --request POST'http://localhost:4004/admin/$ batch'\
 --header'内容类型:多部分/混合;  boundary = batch_123 \ r \ n'\
 --header'接受:application/json'\
 --header'授权:基本YXNoaXNoOg =='\
 --data-raw'--batch_123


 内容类型:多部分/混合;边界= changeset_456
 --changeset_456


 内容类型:应用程序/http
 内容传输编码:二进制


 POST/admin/Authors HTTP/1.1
 内容类型:application/json
 内容长度:48
 接受:application/json


 {
     " ID":221,
     "名称":"福尔摩斯"
 }


 --changeset_456--


 --batch_123--'
 

有什么建议吗?

谢谢!

一周热门 更多>