С# HttpClient ProtocolViolationException

Для проекта я должен использовать API, который использует глагол GET и для которого обязательно требуется свойство «Content-type», но это не стандарт, и я хотел бы установить для этого свойства значение «application/json».

Я использую C # HttpClient и, просмотрев всю вселенную, не могу найти способ сделать это. У меня всегда есть "ProtocolViolationException", очевидно...

Есть ли способ использовать запрос «Content-type» и «GET» с HttpClient?

я использую этот код

public async Task<HttpResponseMessage> GetAsync(string uri, double timeout = 0, string token = null)
    {
        using(var handler = new HttpClientHandler())
        {
            if(handler.SupportsAutomaticDecompression)
            {
                handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            }

            using(var client = new HttpClient(handler))
            {
                var request = new HttpRequestMessage(HttpMethod.Get, uri);

                HttpResponseMessage httpResponseMessage = null;

                if(timeout > 0)
                {
                    client.Timeout = TimeSpan.FromSeconds(timeout);
                }

                if(!string.IsNullOrWhiteSpace(token))
                {
                    request.Headers.Add("authorization", token);
                }

                request.Content = new StringContent("");
                request.Content.Headers.Remove("Content-type");
                request.Content.Headers.Add("Content-type", "application/json");

                httpResponseMessage = await client.SendAsync(request);

                return httpResponseMessage;
            }
        }
    }

Заранее спасибо :)


person Arezki Saba    schedule 30.05.2015    source источник
comment
Пожалуйста, покажите, что вы пробовали. Вы можете легко указать заголовок Content-Type в HttpRequestMessage...   -  person Jon Skeet    schedule 30.05.2015
comment
Мы будем более полезны, если вы разместите код для просмотра.   -  person Hovo    schedule 30.05.2015


Ответы (1)


Не устанавливайте Content-Type в запросе GET. Вместо этого, предполагая, что вы хотите получить результат JSON, установите заголовок Accept.

person rogi1609    schedule 30.05.2015
comment
Да, как правило, содержимое предназначено только для POST и PUT, но для API, который я использую, требуются GET и Content-type, иначе API не дает никаких результатов, есть ли способ сделать это? - person Arezki Saba; 30.05.2015