2015-12-17 76 views
0

我有一个使用策略号查询api的方法。我发现查询字符串的字符限制刚刚超过2k。这是我发送查询的方法。我如何确保或缩短字符串,使其永远不会超出字符数限制?如何缩短Odata查询字符串?

public void BuildPolicyQuery() 
     { 
      if (!PolicyNumbers.IsAny()) return; 
      //if (PolicyNumbers == null || PolicyNumbers.Count() == 0) return; 
      QueryForWebServices = "Policy?$filter=PolicyNumber eq '" + PolicyNumbers.First() + "'"; 
      if (PolicyNumbers.Count() == 1) return; 
      foreach (var p in PolicyNumbers.Skip(1)) 
      { 
       QueryForWebServices += " or PolicyNumber eq '" + p + "'"; 
      } 
     } 
+0

您如何确保保单号码不会加起来超过2K个字符? – lencharest

回答

3

如果您可以修改服务,那么您可以在策略路由上定义一个操作,并在操作负载中传递策略编号。例如:

POST /Policy/SomeNamespace.GetSubsetByPolicyNumber 
{ "PolicyNumbers": [ 123, 456, ... ] } 

你想要的行动,而不是一个功能,因为前者使用POST,并采取有效载荷(内容主体),而后者使用与在URI参数GET。

Actions and Functions in OData v4 Using ASP.NET Web API 2.2

+0

谢谢,是的,我意识到错误发生时,字符串建立,而不是当它被发送。我意识到,当我试图使用$ Top来看看那会给我带来什么。谢谢你的帮助! –