代码之家  ›  专栏  ›  技术社区  ›  GameBuilder

ODATA:URL中的特殊字符

  •  0
  • GameBuilder  · 技术社区  · 7 年前

    对于以下URL,

    https://xxxxxxx.xxx.xxxxxxxx.com/sap/c4c/odata/v1/c4codataapi/CorporateAccountHasContactPersonCollection ?$filter=AccountID等式“1000024”

    - <m:properties>
        <d:ObjectID>00163E10AD0B1ED686EF458B4E8C51D5</d:ObjectID> 
        <d:ParentObjectID>00163E10AD201EE5A4F0B592DE751AE8</d:ParentObjectID
        <d:AccountID>1000024</d:AccountID> 
        <d:ContactID>1002636</d:ContactID>
        <d:FunctionCode>Z021</d:FunctionCode> 
        <d:Mobile>+33 123456789</d:Mobile> 
        <d:Phone>+33 987654321</d:Phone> 
      </m:properties>
    

    FunctionCode https://xxxxxxx.xxx.xxxxxxxx.com/sap/c4c/odata/v1/c4codataapi/CorporateAccountHasContactPersonCollection ?$filter=功能代码eq'Z021'

    但当我用过滤器搜索时 Phone

    https://xxxxxxx.xxx.xxxxxxxx.com/sap/c4c/odata/v1/c4codataapi/CorporateAccountHasContactPersonCollection

    URL根本不起作用。 是因为电话号码中的特殊字符“+”吗

    我试过使用$filter=endswith(电话,'123456789'),效果很好。但这不是我想要的解决方案。

    非常感谢。 当做 普拉特

    1 回复  |  直到 7 年前
        1
  •  1
  •   Andre F    7 年前

    原因是这些特殊字符在URL中使用时具有不同的含义。JavaScript encodeUri或encodeUri组件无法解决此问题。

    以下是在OData查询中使用时需要替换的特殊字符列表: https://msdn.microsoft.com/en-us/library/aa226544(SQL.80).aspx

    个性 + %2B .

    然后,您的修正过滤器应为 $filter=Phone eq '%2B33 123456789' .

    找一篇好文章 here .