使用 Flurl 为 JSON 请求指定内容语言?

Specifying content language for JSON request with Flurl?

问题

我想 POST 一个 JSON 使用 Flurl 的请求,指定内容 header 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);

破解给出错误的代码

Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.

我明白内容 headers 应该设置在内容而不是请求上,但是,在阅读这篇 (and ) 之后,似乎不再需要区分请求和内容级别使用 Flurl 2.0+.

旁注

使用的 API 是模拟的。我知道使用 PostJsonAsync 会自动设置 Content-Type header,但是,对于我的用例,它将设置为 application/vnd.api+json,因此需要明确指定.

问题

我做错了什么?关于内容 header 有什么我不明白的地方吗?
Content-Language 添加到请求时,Content-LanguageContent-Type 有何不同?

对于遇到同样问题的每个人:这是一个错误。我提交了 issue on GitHub and the maintainer approved it, saying it'll be fixed on the next release (supposedly Flurl.Http 2.4.1).
除了 Content-Language 之外,headers AllowContent-Encoding 也丢失了,并且会抛出与问题中描述的相同的错误。