【问题标题】:Getting 304 response using Core 3.1 HttpClient.SendAsync使用 Core 3.1 HttpClient.SendAsync 获得 304 响应
【发布时间】:2020-03-04 01:29:04
【问题描述】:

我使用 .Net Framework 4.6.1 下的 HttpClient.SendAsync() 将 JSON 发布到供应商的服务器,并毫无问题地获得有效响应。但是,当我在 Core 3.1.2 下尝试相同的代码时,我在第一次尝试时获得了 304(未修改)的 HTTP 状态代码,但在第二次尝试时获得了良好的响应。 Core 发生了什么变化?有关如何解决此问题的任何建议?

    private static readonly HttpClient httpClient = new HttpClient();

    public static async Task<HttpResponseMessage> PostJson(string uri, string userName, string password, object content)
    {
        using var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, uri);
        AddBasicAuthorizationHeader(userName, password, httpRequestMessage);
        httpRequestMessage.Content = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8, "application/json");
        return await httpClient.SendAsync(httpRequestMessage).ConfigureAwait(false);
    }

【问题讨论】:

  • 您是否准确比较了每个版本之间的请求发送的标头/值?

标签: c# .net-core dotnet-httpclient


【解决方案1】:

304 主要是为了确保在客户端已经具有与服务器上相同的信息表示的情况下最小化信息传输。 304 通常仅以标头结尾,如其他答案中所述,我还建议查看两个请求的标头,一个提供 304 的标头和一个提供 200 OK 的标头,您可能还需要了解是否有特定的304 之后的类将通过 200 OK 或对服务器的每个替代调用成功的时间段是 304,然后是 200 OK,然后是 200 OK。如果可能,请发布标题比较。

【讨论】:

    猜你喜欢
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 2021-05-05
    • 2011-09-18
    • 1970-01-01
    • 2020-10-10
    相关资源
    最近更新 更多