带有 Content-Type 的 Http 发布请求:application/x-www-form-urlencoded

Posted

技术标签:

【中文标题】带有 Content-Type 的 Http 发布请求:application/x-www-form-urlencoded【英文标题】:Http post request with Content-Type: application/x-www-form-urlencoded 【发布时间】:2019-06-14 07:00:26 【问题描述】:

如何使用 content-type = application/x-www-form-urlencoded 发送 POST 请求。 给定访问代码,我正在尝试使用 POST 请求获取 AccessToken,其中我在 POST URL 中设置了所有信息,所以我不知道在 postAysnc 方法中作为 Http 内容传递什么。

根据另一篇文章对于 application/x-www-form-urlencoded,发送到服务器的 HTTP 消息的主体本质上是一个巨大的查询字符串——名称/值对由 & 号 (&) 分隔,并且名称与值用等号 (=) 分隔。这方面的一个例子是:

MyVariableOne=ValueOne&MyVariableTwo=ValueTwo。

所以我有类似的情况,我的 POST url 将所有信息作为查询字符串,在这种情况下,我不知道在 postAysnc 方法中作为 HttpContent 传递什么,因为它是一个强制参数

HttpClient 客户端 = 新的 HttpClient(); 字符串内容查询字符串 = 新字符串内容(数据); HttpResponseMessage 响应 = 等待 client.PostAsync(new Uri(url), queryString );

【问题讨论】:

【参考方案1】:

两种选择:

    继续使用StringContent,但设置内容类型:new StringContent(data, Encoding.UTF8, "application/x-www-form-urlencoded") 不要使用StringContent,而是使用FormUrlEncodedContent;请注意,这需要 KeyValuePair<string, string> 描述值的序列(例如,创建一个包含 "MyVariableOne", "ValueOne", "MyVariableTwo", "ValueTwo" 的字典

【讨论】:

以上是关于带有 Content-Type 的 Http 发布请求:application/x-www-form-urlencoded的主要内容,如果未能解决你的问题,请参考以下文章

带有自定义标头的 C# HttpClient POST 请求发送不正确的 Content-Type 标头字段

html 检测是否支持协议处理程序(通过带有适当Content-Type标头的rawgit提供)http://rawgit.com/masdeseiscaracteres/d92bb8

Restangular 不会改变 Http Content-Type

带有 JSON 的 Http 415 不支持的媒体类型错误

由 Quarkus 提供的带有错误 Content-Type 标头的 Wasm 文件

如何将带有数据的http标头发送到rest Api codeigniter?