Указываете язык содержимого для запроса JSON с Flurl? - PullRequest
0 голосов
/ 17 декабря 2018

Issue

Я бы хотел POST a JSON запрос с использованием Flurl с указанным заголовком содержимого Content-Language.Мне уже удалось установить тип содержимого (Content-Type) без каких-либо проблем:

string response = await "https://jsonplaceholder.typicode.com/".AppendPathSegment("posts")
            .WithHeaders(new { Content_Type = "application/json; charset=UTF-8" })
            .PostJsonAsync(new { title = "bar", body = "foo", userId = 1 }).ReceiveString();

Console.WriteLine(response);

, правильно возвращая:

{
  "title": "bar",
  "body": "foo",
  "userId": 1,
  "id": 102
}

Однако, пытаясь указать Content-Language дополнительно:

string response = await "https://jsonplaceholder.typicode.com/".AppendPathSegment("posts")
            .WithHeaders(new { Content_Type = "application/json; charset=UTF-8", Content_Language = "en-US" })
            .PostJsonAsync(new { title = "bar", body = "foo", userId = 1 }).ReceiveString();

Console.WriteLine(response);

ломает код, выдавая ошибку

Неправильное имя заголовка.Убедитесь, что заголовки запросов используются с HttpRequestMessage, заголовки ответов с HttpResponseMessage и заголовки содержимого с объектами HttpContent.

Я понимаю, что заголовки содержимого следует устанавливать для содержимого, а не для запроса, однако после чтенияэтот ответ этот ) казалось, что больше нет необходимости различать уровни запросов и контента с Flurl 2.0 +.

Примечание

Используемый API-это макет.Мне известно, что при использовании PostJsonAsync автоматически устанавливается заголовок Content-Type, однако для моего случая использования он будет установлен на application/vnd.api+json и, следовательно, должен быть указан явно.

Вопрос

Что я делаю не так?Что я не понимаю в заголовках контента?
Чем Content-Language отличается от Content-Type при добавлении его в запрос?

1 Ответ

0 голосов
/ 18 декабря 2018

Для всех, кто сталкивается с одной и той же проблемой: это ошибка.Я подал проблему на GitHub , и сопровождающий одобрил ее, заявив, что она будет исправлена ​​в следующей версии (предположительно Flurl.Http 2.4.1 ).
В дополнение кContent-Language, заголовки Allow и Content-Encoding также отсутствуют и выдают такую ​​же ошибку, как описано в выпуске.

...