使用Core 3.1 HttpClient.SendAsync获得304响应

问题描述 投票:0回答:1

我在.Net Framework 4.6.1下使用HttpClient.SendAsync()将JSON放置到供应商的服务器上,并毫无问题地获得了有效的响应。但是,当我在Core 3.1.2下尝试相同的代码时,第一次尝试得到的HTTP状态代码为304(未修改),而第二次尝试得到的响应很好。 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个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.