我正在尝试使用编码为ISO-8859
的参数在C#中发送POST请求。我正在使用此代码:
using (var wb = new WebClient())
{
var encoding = System.Text.Encoding.GetEncoding("ISO-8859-1");
var encodedText = System.Web.HttpUtility.UrlEncode("åæ ÆÆ øØ ø", encoding);
wb.Encoding = encoding;
wb.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
var data = new NameValueCollection();
data["TXT"] = encodedText;
var response = wb.UploadValues(_url, "POST", data);
}
我已经发现"åæ ÆÆ øØ ø"
的正确编码字符串是%E5%E6+%C6%C6++%F8%D8+%F8
,我可以看到调试时encodedText
实际上是这个字符串。但是当在fiddler中检查原始请求时,我可以看到字符串看起来像这样:TXT=%25e5%25e6%2B%25c6%25c6%2B%25f8%25d8%2B%25f8
。我猜测在调用UploadValues()
之后或期间对字符串进行了某种额外的编码。
提前非常感谢你。
答案 0 :(得分:1)
我检查了谷歌。根据另一个关于SO UTF32 for WebClient.UploadValues?(第二个答案)的问题,Webclient.UploadValues()
确实编码自己。但是,它执行ASCII编码。您必须使用其他方法上传此内容,例如HttpWebRequest
。