Получение ответа 304 с использованием Core 3.1 HttpClient.SendAsync - PullRequest
0 голосов
/ 04 марта 2020

Я отправляю JSON на сервер поставщика с помощью HttpClient.SendAsyn c () в. Net Framework 4.6.1 и получаю правильный ответ без проблем. Однако, когда я пытаюсь использовать тот же код в 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);
    }

1 Ответ

0 голосов
/ 04 марта 2020

304 В основном для обеспечения минимизации передачи информации в случае, если клиент уже имеет такое же представление информации, как на сервере. 304 обычно заканчивается только заголовками, как уже упоминалось в другом ответе. Я бы также посоветовал взглянуть на заголовки и запроса, и того, который дает 304, и того, который дает 200 OK, а также вам может понадобиться понять, есть ли c период, для которого класс после 304 будет успешным с 200 OK или каждый альтернативный вызов к серверу равен 304, а затем 200 OK, за которым следует. и, если возможно, опубликуйте сравнение заголовков.

...