带有 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