我想发送
一个
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-Language
与Content-Type
在添加到请求时有什么不同?
对于每个遇到同样问题的人来说:这是一个bug。我在GitHub上提出了一个问题,维护者批准了这个问题,说它将在下一个版本(应该是flurl.http 2.4.1)上修复。
除了content-language
之外,标题Allow
和content-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。