C# HttpWebRequest.GetRequestStream避免协议违反异常

C# HttpWebRequest.GetRequestStream避免协议违反异常,c#,asp.net-mvc,asp.net-web-api,httpwebrequest,C#,Asp.net Mvc,Asp.net Web Api,Httpwebrequest,当方法为GET时,是否有任何方法防止HttpWebRequest.GetRequestStream引发异常 我知道HEAD和GET不应该在有效的HTTP中包含正文,但有些服务器无论如何都接受这些方法的正文(例如,Elasticsearch的_搜索功能)。我必须调用一些GETAPI方法,从请求体检索参数 var uri = new Uri(@"someurl"); var request = (HttpWebRequest)WebRequest.Create(uri); request.Metho

当方法为
GET
时,是否有任何方法防止
HttpWebRequest.GetRequestStream
引发异常

我知道
HEAD
GET
不应该在有效的HTTP中包含正文,但有些服务器无论如何都接受这些方法的正文(例如,Elasticsearch的_搜索功能)。我必须调用一些GETAPI方法,从请求体检索参数

var uri = new Uri(@"someurl");
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "GET";
request.Accept = "*/*";
request.ContentType = "application/json";

var bytes = Encoding.GetEncoding("iso-8859-1").GetBytes(JsonConvert.SerializeObject(someObject));
request.ContentLength = bytes.Length;

using (var writeStream = request.GetRequestStream())
{
    writeStream.Write(bytes, 0, bytes.Length);
}

删除行
request.ContentLength=bytes.Length
并检查它是否工作。@ViVi它没有帮助。然后将方法类型更改为
POST
@MykhalikI无法使用
POST
,我必须调用
GET
方法从请求体检索参数。所以我需要一个带有请求主体的
GET
方法。你能参考这个并检查它是否有用吗?删除行
request.ContentLength=bytes.Length
并检查它是否工作。@ViVi它没有帮助。然后将方法类型更改为
POST
@MykhalikI无法使用
POST
,我必须调用
GET
方法从请求体检索参数。所以我需要一个带有请求主体的
GET
方法。你能参考这个并检查它是否有用吗?