我正在为 Windows Phone 8.1 编写 C# 应用程序。应用程序向带有post数据的网页发送http请求,但是,当我将请求内容复制到字符串时,它会抛出异常。
这是代码,
var values = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("username", "usernameHere"),
new KeyValuePair<string, string>("password", "passwordHere"),
};
var httpClient = new HttpClient(new HttpClientHandler());
var response = await httpClient.PostAsync(new Uri(LOGIN_URL), new FormUrlEncodedContent(values));
if (response.IsSuccessStatusCode)
{
string responseString = "";
try
{
responseString = await response.Content.ReadAsStringAsync();
}
catch (Exception e)
{
MessageBox.Show("Exception caught " + e);
}
}
错误是,
"System.InvalidOperationException: The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set. ---> System.ArgumentException: 'ISO8859_1' is not a supported encoding name."
显然,解决方案是使用 GetByteArrayAsync 而不是 PostAsync ( How to change the encoding of the HttpClient response ),但这样我无法提交发布数据。
最佳答案
Apparently the solution is to use GetByteArrayAsync instead of PostAsync
不,您可以使用 HttpContent
的 ReadAsByteArrayAsync
方法类
byte[] data = await response.Content.ReadAsByteArrayAsync();
关于c# - HTTP 响应中的无效字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29451576/