v2 oData DELETE请求键值未经过URL编码

2020-09-08 11:02发布

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

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


有人可以确认吗? 是虫子吗? 这两个请求均取自批处理请求中的请求有效负载,请注意,KEY01包含一个带有空格的值(lezezeich):

当我通过setProperty编辑数据集并提交更改时,一切都很好:

MERGE MY_DATASet(TABNAME ='MYTABLE',CV ='',ID = 0,KEY01 ='leer%20zeich',KEY02 ='xxx',KEY03 ='yyy',KEY04 ='zzz',KEY05 =' ',KEY06 ='',KEY07 ='',KEY08 ='',KEY09 ='',KEY10 ='')HTTP/1.1

我认为由于KEY01中值的正确url编码,因此此请求已成功完成。

删除请求失败,并显示错误消息:"由于语法格式错误,无法理解数据服务请求"。 我认为这失败了,因为KEY01中的值未经过网址编码。

删除MY_DATASet(TABNAME ='MYTABLE',CV ='',ID = 0,KEY01 ='leer zeich',KEY02 ='xxx',KEY03 ='yyy',KEY04 ='zzz',KEY05 ='' ,KEY06 ='',KEY07 ='',KEY08 ='',KEY09 ='',KEY10 ='')HTTP/1.1

是否有解决此问题的方法?

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

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


有人可以确认吗? 是虫子吗? 这两个请求均取自批处理请求中的请求有效负载,请注意,KEY01包含一个带有空格的值(lezezeich):

当我通过setProperty编辑数据集并提交更改时,一切都很好:

MERGE MY_DATASet(TABNAME ='MYTABLE',CV ='',ID = 0,KEY01 ='leer%20zeich',KEY02 ='xxx',KEY03 ='yyy',KEY04 ='zzz',KEY05 =' ',KEY06 ='',KEY07 ='',KEY08 ='',KEY09 ='',KEY10 ='')HTTP/1.1

我认为由于KEY01中值的正确url编码,因此此请求已成功完成。

删除请求失败,并显示错误消息:"由于语法格式错误,无法理解数据服务请求"。 我认为这失败了,因为KEY01中的值未经过网址编码。

删除MY_DATASet(TABNAME ='MYTABLE',CV ='',ID = 0,KEY01 ='leer zeich',KEY02 ='xxx',KEY03 ='yyy',KEY04 ='zzz',KEY05 ='' ,KEY06 ='',KEY07 ='',KEY08 ='',KEY09 ='',KEY10 ='')HTTP/1.1

是否有解决此问题的方法?

付费偷看设置
发送
6条回答
jovirus
1楼 · 2020-09-08 11:08.采纳回答

无论何时创建访问实体的路径(例如,执行CRUD时),请确保使用API​​ createKey 。 例如:

 const myODataModel = this.getOwnerComponent()。getModel(/* modelName */);
 const createPath =()=> myODataModel.createKey("/img/MY_DATASet",{
   KEY01:" leer zeich",//被编码为" leer%20zeich"
   KEY02:" xxx",
  //...
 });
 myODataModel.metadataLoaded()。then(()=> myODataModel.remove(createPath())); 

API确保对URI部分进行编码(通过 encodeURIComponent内部 https://stackoverflow.com/a/47016070 中提到的好处。

xfwsx85
2楼-- · 2020-09-08 11:19

从se38
/UI2/PAGE_CACHE_RESET
/UI2/INVALIDATE_CLIENT_CACHES

/UI5/APP_INDEX_CALCULATE

/UI2/INVALIDATE_GLOBAL_CACHES

< br>使用按钮重建segw:



您是否使用createkey在 SAPUI5代码?
Like:

 var oModel = this.getView()。getModel(" nameModel");

 var sPath = oModel.createKey("/img/MY_DATASet",{
 " TABNAME":param1,
 "简历":param2,
 ****等等*******
 });

 oModel.remove(sPath,{
                 成功:功能(){
 *****
 },
 错误:函数(msg){
 *****
 }
 });
 } .bind(this)));

 
宇峰Kouji
3楼-- · 2020-09-08 11:17

嗨,蒂莫,


我在DELETE中看到key01的值中缺少转义字符%20。
有时需要刷新元数据缓存和应用程序缓存以解决此问题。
也许可以解决问题

Sebastiano

d56caomao
4楼-- · 2020-09-08 11:14

嗨,蒂莫,是的,您可以从请求中删除空白吗?

nice_wp
5楼-- · 2020-09-08 11:20

javascript函数encodeURIComponent( 字符串uri)就是一种解决方法。

JavaScript encodeURIComponent < br>

当学会了学习
6楼-- · 2020-09-08 11:06

嗨,蒂莫,我看到两个地方可以解决这个问题。

No1:

在网关删除实体集中放置断点,并从UI执行删除操作。 如果请求达到了断点,请关注网关删除实体集类。

2号:

如果您请求未到达网关,在这种情况下,请避免使用空格并检查是否按照网关属性维护了关键属性。

此致

Karthik Arjun

一周热门 更多>