我正在开发 ASP.Net MVC 4 Web 应用程序,我需要将 JSON 对象发布到第三部分 API。现在我需要通过将内容类型设置为来对 JSON 数据进行编码application/x-www-form-urlencoded
如 API 文档中所述。所以我通过指定尝试了以下操作Content-Type
as wc.Headers["Content-Type"] = "application/x-www-form-urlencoded";
:
var data = JsonConvert.SerializeObject(mainresourceinfo);
using (WebClient wc = new WebClient())
{
string url = currentURL + "resources?AUTHTOKEN=" + pmtoken;
Uri uri = new Uri(url);
// wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
wc.Headers["Content-Type"] = "application/x-www-form-urlencoded";
crudoutput = wc.UploadString(uri, "INPUT_DATA=" + data);
}
但数据仍然没有被编码..如果我发送一个值,例如123%456
在我的 JSON 字符串中,它将被保存为123E6t
在第三部分系统内。现在作为解决方法,我使用手动编码 JSON 对象WebUtility.UrlEncode(data)
在将其发送到第三部分 API 之前,我可以看到诸如123%456
将正确保存...
但我不想手动编码数据,我想设置内容类型来指定编码...这可能吗?
Use
wc.Headers["Content-Type"] = "application/json"
并尝试设置字符集
wc.Encoding = Encoding.UTF8;
crudoutput = wc.UploadString(uri, "INPUT_DATA=" + Encoding.UTF8.GetString(data));
Charset
指定文档的字符编码。默认字符集为HTTP 1.1
是 ANSI 因为 ANSI 与ISO-8859-1 http://www.w3schools.com/charsets/ref_html_8859.asp.
Alse WebClient.Encoding
默认设置为Encoding.Default
这意味着您获得了 ANSI 代码页。所有默认编码都会丢失数据,因此您可以使用 UTF-8 代替。
因此,如果设置了 charset,并不意味着所有内容都必须编码为 Unicode,但它确实意味着这些文档只能包含 Unicode 定义的字符。这意味着您还需要将内容保存为 UTF-8。在这种情况下你可以使用Encoding.UTF8.GetString()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)