【问题标题】:Avoid HttpWebRequest GET and ProtocolViolationException避免 HttpWebRequest GET 和 ProtocolViolationException
【发布时间】:2015-12-17 18:40:42
【问题描述】:

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

在某个时候,我可能会使用新的System.Net.Http.HttpClient 类创建我的库的一个版本。这个类有同样的限制吗?

【问题讨论】:

    标签: httpwebrequest dotnet-httpclient http-protocols


    【解决方案1】:

    .Net Core 2.0:

    如果您使用SendAsync 方法,System.Net.Http.HttpClient(版本=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();
    

    【讨论】:

      猜你喜欢
      • 2014-02-14
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      相关资源
      最近更新 更多