HttpClient - «Неподдерживаемый тип носителя» - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь опубликовать следующий запрос, но получаю ответ "Unsupported Media Type".Я устанавливаю Content-Type на application/json.Любая помощь будет оценена.

var json = JsonConvert.SerializeObject(request);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
MyResult result = new MyResult();
using (var client = new HttpClient())
{
    client.BaseAddress = new Uri(baseurl);
    client.DefaultRequestHeaders.Clear();               
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", base64ApiKey);
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));               
    HttpResponseMessage Res = await client.PostAsync(method, stringContent);
    if (Res.IsSuccessStatusCode)
    {
        var response = Res.Content.ReadAsStringAsync().Result;
        result = JsonConvert.DeserializeObject<MyResult>(response);
    }               
}

1 Ответ

0 голосов
/ 12 марта 2019

После проверки необработанных данных, отправленных из моего кода, я увидел, что эта строка добавляет кодировку:

var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");

Фактические отправленные данные выглядят так:

Content-Type: application/json; charset=utf-8

Iнеобходимо удалить кодировку из запроса с помощью:

stringContent.Headers.ContentType.CharSet = string.Empty;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...