检索名称括号后出现重复错误

问题描述 投票:0回答:1

我尝试在 CRM 中查找每个 WEB API 给定名称的重复项。 我使用这样的 API 调用:

https://orgname.crm.dynamics.com/api/data/v9.2/RetrieveDuplicates(BusinessEntity=@p1,MatchingEntityName=@p2,PagingInfo=@p3)?@p1=%7B%22%40odata.type%22%3A%22Microsoft.Dynamics.CRM.account%22%2C%22name%22%3A%22ACME%20Corp%22%7D&@p2=%27account%27&@p3=%7B%27PageNumber%27%3A1%2C%27Count%27%3A50%7D

@p1 是一个 urlecoded json:

{"@odata.type":"Microsoft.Dynamics.CRM.account","name":"ACME Corp"}

所有工作都没有问题,直到名称包含像 ACME (USA) Corp 这样的括号。这会给我错误消息“错误请求 - 查询语法错误。”

仅当右括号后有文本时才会发生错误,因此

https://orgname.crm.dynamics.com/api/data/v9.2/RetrieveDuplicates(BusinessEntity=@p1,MatchingEntityName=@p2,PagingInfo=@p3)?@p1=%7B%22%40odata.type%22%3A%22Microsoft.Dynamics.CRM.account%22%2C%22name%22%3A%22ACME%20%28USA%29%22%7D&@p2=%27account%27&@p3=%7B%27PageNumber%27%3A1%2C%27Count%27%3A50%7D

{"@odata.type":"Microsoft.Dynamics.CRM.account","name":"ACME (USA)"}

按预期工作并检索现有重复项。

但这会产生错误的请求错误:

https://orgname.crm.dynamics.com/api/data/v9.2/RetrieveDuplicates(BusinessEntity=@p1,MatchingEntityName=@p2,PagingInfo=@p3)?@p1=%7B%22%40odata.type%22%3A%22Microsoft.Dynamics.CRM.account%22%2C%22name%22%3A%22ACME%20%28USA%29Corp%22%7D&@p2=%27account%27&@p3=%7B%27PageNumber%27%3A1%2C%27Count%27%3A50%7D

{"@odata.type":"Microsoft.Dynamics.CRM.account","name":"ACME (USA)Corp"}

我尝试了括号,斜杠转义括号,双斜杠转义括号,所有前者都经过urlencoded。

括号五“错误请求”,单斜杠给出“无效的 JSON。在 JSON 字符串值中发现无法识别的转义序列 '\('。”,双斜杠给出没有错误,但也没有重复,即使它们存在。

dynamics-crm webapi
1个回答
0
投票

这似乎是由内部序列化缺陷引起的。

解决方法可能是使用 ID 来识别您需要检查重复项的记录。您的查询将如下所示:

https://orgname.crm.dynamics.com/api/data/v9.2/RetrieveDuplicates(BusinessEntity=@p1,MatchingEntityName=@p2,PagingInfo=@p3)?@p1={"@odata.type":"Microsoft.Dynamics.CRM.account","accountid":"b6047a80-b59d-ef11-a72c-0022489e68d8"}&@p2='account'&@p3={'PageNumber':1,'Count':50}

当您没有 ID 时,您可以使用如下简单查询:

https://orgname.crm.dynamics.com/api/data/v9.2/accounts?$filter=name eq 'ACME (USA) Corp.' and statecode eq 0&$top=50
© www.soinside.com 2019 - 2024. All rights reserved.