首页 > 解决方案 > 带有 Content-Type 的 Http 发布请求:application/x-www-form-urlencoded

问题描述

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

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

MyVariableOne=ValueOne&MyVariableTwo=ValueTwo。

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

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

标签: posthttpclientaccess-tokenurl-encoding

解决方案


两种选择:

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

推荐阅读