elasticsearch,.net,Get,elasticsearch" /> elasticsearch,.net,Get,elasticsearch" />

.net 无法使用GET请求发送内容正文

.net 无法使用GET请求发送内容正文,.net,get,elasticsearch,.net,Get,elasticsearch,我正在尝试在Elasticsearch上执行一个简单的“请求主体搜索”,比如,但是使用.NET而不是curl $ curl -XGET 'http://localhost:9200/twitter/tweet/_search' -d '{ "query" : { "term" : { "user" : "kimchy" } } } ' 下面是我的.NET代码 var uri = "http://localhost:9200/myindex/_search"; v

我正在尝试在Elasticsearch上执行一个简单的“请求主体搜索”,比如,但是使用.NET而不是curl

$ curl -XGET 'http://localhost:9200/twitter/tweet/_search' -d '{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}
'
下面是我的.NET代码

var uri = "http://localhost:9200/myindex/_search";
var json = "{ \"query\" : { \"term\" : { \"user\" : \"kimchy\" } } }";

var request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri);
request.ContentType = "text/json";
request.Method = "GET";

var responseString = string.Empty;

using (var streamWriter = new System.IO.StreamWriter(request.GetRequestStream()))
{
    streamWriter.Write(json);
    streamWriter.Flush();
    streamWriter.Close();

    var response = (System.Net.HttpWebResponse)request.GetResponse();
    using (var streamReader = new System.IO.StreamReader(response.GetResponseStream()))
    {
        responseString = streamReader.ReadToEnd();
    }
}
但是,我得到了以下错误

Cannot send a content-body with this verb-type.
...
Exception Details: System.Net.ProtocolViolationException: Cannot send a content-body with this verb-type.
...
Line 54: using (var streamWriter = new System.IO.StreamWriter(request.GetRequestStream()))

是否有任何方法可以使用标准的.NET类发送带有
GET
请求的内容正文。或者有解决办法吗?

方法更改为
POST
是一种解决办法

request.Method = "POST";

声明如果使用
GET
HEAD
方法调用
GetResponseStream()
方法,将抛出
ProtocolViolationException

我遇到了相同的问题,但该方法必须是GET,我没有权限将其从GET更改为POST,是否有其他解决方法?