【发布时间】:2020-05-15 07:01:05
【问题描述】:
我正在尝试向 REST API 发出带有正文的 GET 请求 - 没有成功。 API 位于 Elastisearch 之上,它需要一个请求主体。 正文包含请求的特定字段的过滤器和请求。 我在 Postman 中尝试了多个不同的请求,它们工作正常。转发正文并按预期过滤结果。
API 是状态运行的,这意味着我无法控制它。 它拒绝任何不是 GET(POST、PUT 等)的请求。
我尝试过使用 RestSharp,但它拒绝使用正文发出 GET 请求。 错误消息是:“Http 动词 GET 不支持正文”。 (我试图从 Postman 获取 C# 代码,但它引发了相同的异常)。
我也尝试过使用 HttpClient、HttpWebRequest 和 WebClient。他们都犯了同样的错误。 为了尝试一个新平台,我创建了一个从 C# 运行的 PowerShell 脚本,但它引发了相同的异常。
这在 C# 中是不可能的吗?
我现在唯一的选择是创建例如可以成功查询 API 的 PHP(或其他语言)脚本,然后从 C# 访问此脚本。但这似乎只是一个解决方法,只是因为 GET/body 问题。
您可以提供或推荐给我的任何建议或资源将不胜感激!谢谢。
顺便说一句。我在 Stackoverflow 上看到了很多关于这个问题的帖子。他们中的许多人都很老了,所以我希望也许有些事情已经改变了。他们中的许多人最终都得到了一个使用 POST 而不是 GET 的解决方案——这对我来说不是一个选择。
【问题讨论】:
-
有一个名为 Nest 的 .Net 客户端,用于弹性搜索。 elastic.co/guide/en/elasticsearch/client/net-api/current/…
-
这能回答你的问题吗? HTTP GET with request body
-
也似乎相关,在 vtc 之后不久发现:stackoverflow.com/a/47902348/313414 建议一种解决方法,让 HttpClient 执行您的要求
标签: c# rest elasticsearch