当前位置: 首页 > 知识库问答 >
问题:

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

江雅懿
2023-03-14

我想发送一个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
}
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);

所使用的API是一个模拟。我知道使用PostJsonAsync会自动设置Content-type头,但是,对于我的用例,它将被设置为application/vnd.api+json,因此需要显式指定。

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

共有1个答案

柴兴修
2023-03-14

对于每个遇到同样问题的人来说:这是一个bug。我在GitHub上提出了一个问题,维护者批准了这个问题,说它将在下一个版本(应该是flurl.http 2.4.1)上修复。
除了content-language之外,标题Allowcontent-encoding也丢失了,并将抛出与问题中描述的相同的错误。

 类似资料:
  • 我正在使用flurl提交HTTP请求,这是非常有用的。现在,我需要将一些请求的“content-type”头更改为“application/json;odata=verbose” 您可以看到我如何尝试添加上面的头() 不幸的是,这给了我以下错误: “InvalidOperationException:错误使用的标头名称。请确保请求标头与HttpRequestMessage一起使用,响应标头与Htt

  • 问题内容: 我有一个烧瓶应用程序,具有以下视图: 但是,这仅在请求的内容类型设置为时才有效,否则dict 为None。 我知道请求主体为字符串,但我不想每次客户端忘记设置请求的内容类型时都将其解析为字典。 有没有办法假设每个传入请求的content- type是?我想要的就是始终访问有效的字典,即使客户端忘记将应用程序的内容类型设置为json。 问题答案: 使用并设置为: 从文档中: 默认情况下,

  • 下面是我的Ajax请求: 如果我没有精确的内容类型,我就无法再看到Firebug的请求。相反,当我添加内容类型时,我可以看到POST请求(由于我的URL是false而出现错误),但在我的头中,内容类型默认是URL编码的表单。 我想要的是通过JSON数据发送表单的详细信息。谢谢你的帮助

  • 许多代码可以消耗请求数据并对其进行预处理。例如最终出现在已读取的请求对 象上的 JSON 数据、通过另外的代码路径出现的表单数据。当你想要校验收到的 请求数据时,这似乎带来不便。而有时这对某些 API 是必要的。 幸运的是,无论如何可以包装输入流来简单地改变这种状况。 下面的例子计算收到数据的 SHA1 校验码,它从 WSGI 环境中读取数据并把校验 码存放到其中: import hashlib

  • 我有一本书。NETCore2.0WebAPI应用程序,其中我将“Flurl.Http”(版本2.1.0)NuGet包添加到我的项目中。 我正在尝试使用Flurl对一个VisualStudioTeamServices(VSTS)APIendpoint进行简单的RESTAPI调用。 但是,我正在调用的特定VSTS api终结点要求将Content-Type设置为“应用程序/json-补丁json”,而

  • 我已经尝试了Flurl的常规PutJsonAsync方法,但没有成功。这是我的代码中唯一的非flurl部分。 事先Thanx。