避免使用HttpWebRequest GET和ProtocolViolationException

时间:2015-12-17 18:40:43

标签: httpwebrequest dotnet-httpclient http-protocols

当方法为HttpWebRequest.GetRequestStream时,是否仍然阻止GET抛出异常?我知道HEADGET不应包含有效HTTP中的正文,但有些服务器无论如何都会接受这些方法的正文(例如,Elasticsearch的{​​{1}}功能)。我有一个用于执行REST调用的开源项目,我想知道是否可以规避这种行为以避免意外。

在某些时候,我可能会使用新的_search类创建我的库的一个版本。这个班级有相同的限制吗?

1 个答案:

答案 0 :(得分:0)

.Net Core 2.0:

如果您使用System.Net.Http.HttpClient方法,

SendAsync(版本= 4.2.0.0)没有此限制。

var request = new HttpRequestMessage(HttpMethod.Get, "http://example.com/api/_search");
request.Content = new StringContent(jsonSearchCriteria, Encoding.UTF8, "application/json");
var response = await httpClient.SendAsync(request,
    HttpCompletionOption.ResponseContentRead);
var jsonResponse = await response.Content.ReadAsStringAsync();