使用 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-Language
与 Content-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 Allow
和 Content-Encoding
也丢失了,并且会抛出与问题中描述的相同的错误。
问题
我想 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 应该设置在内容而不是请求上,但是,在阅读这篇
旁注
使用的 API 是模拟的。我知道使用 PostJsonAsync
会自动设置 Content-Type
header,但是,对于我的用例,它将设置为 application/vnd.api+json
,因此需要明确指定.
问题
我做错了什么?关于内容 header 有什么我不明白的地方吗?
将 Content-Language
添加到请求时,Content-Language
与 Content-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 Allow
和 Content-Encoding
也丢失了,并且会抛出与问题中描述的相同的错误。