我正在开发一个asp.net MVC Web应用程序,我正在与第三方API集成。现在是第三方API,JSON对象需要以下内容: -
500%600
,123%456
... £
,¬
.. 所以我有以下WebClient()
UploadString()
方法,它将对传递的json对象进行url编码并定义UTF8编码: -
using (WebClient wc = new WebClient())
{
string url = currentURL + "resources?AUTHTOKEN=" + pmtoken;
Uri uri = new Uri(url);
wc.Encoding = System.Text.Encoding.UTF8;
wc.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");
var urlencodedData= HttpUtility.UrlEncode(data);
crudoutput = wc.UploadString(uri, "INPUT_DATA=" +urlencodedData );
}
所以在我的情况下,我使用url编码数据和UTF8编码..所以不知道为什么内容类型标题我应该使用?是我正确使用的那个: -
"application/x-www-form-urlencoded");
或者我需要在其中指定UTF8编码吗?
答案 0 :(得分:1)
传输编码已使用Web客户端的Encoding
属性设置。但是,某些UTF-8特定字符可能需要基于编码的特定转换。因此,UrlEncode
方法具有接受编码的重载。
你只需使用这样的方法:
var urlencodedData = HttpUtility.UrlEncode(data, System.Text.Encoding.UTF8);
您选择的内容类型仅控制内容有效内容的解释方式。如果您想使用带有URL编码值的键值和值对,application/x-www-form-urlencoded
是您应该使用的内容类型。
如果您想传输JSON有效负载,则应使用RFC 4627指定的内容类型application/json
。如果您选择这样做,您可以省略URL编码和"INPUT_DATA="
。