在POST而不是GET中使用OData参数查询WCF服务

时间:2012-07-31 15:18:14

标签: wcf wcf-data-services wcf-ria-services odata

我们调用wcf svcs(不是我们的),我们使用gets来搜索产品数据库。

实施例: http://foo.com/SearchProducts.svc?$跳过= 0 $取= 10 $ includeTotalCount =真

我们传递了Odata参数来分页SearchProducts svc的结果。 svc已被更改为POST,因为我们的一个过滤器“skus”有时很大(skus的hundres)导致GET中断,因为uri太大了。我们认为最简单的解决方案就是将调用更改为帖子,但现在似乎没有使用Odata params。

执行POST时,是否需要以不同的方式发送这些参数?

1 个答案:

答案 0 :(得分:1)

兼容的OData服务不支持查询的POST动词(除非您使用POST隧道,但是无论如何您都将达到URL限制)。所以我想知道它对你有什么用。

使用以下几种方法可以克服URL大小限制:

  • 简化查询表达式。显然这只能到目前为止,但它通常是最好的解决方案,因为它可能会加快查询执行速度。
  • 请改用批处理。您可以批量发送GET请求。在这种情况下,URL的长度不是问题,因为查询URL是在批处理的有效负载中发送的。
  • 为您正在使用的复杂查询定义服务操作(但由于您不拥有该服务,这可能不适合您)。