Dre*_*Net 10 c# asynchronous windows-8
我正在尝试使用VS2012及其Async Await关键字了解异步编程.这就是我写这段代码的原因:
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
string get = await GetResultsAsync("http://saskir.medinet.se");
resultsTextBox.Text = get;
}
private async Task<string> GetResultsAsync(string uri)
{
HttpClient client = new HttpClient();
return await client.GetStringAsync(uri);
}
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试调试应用程序时,它给出了一条错误消息:
ContentType中提供的字符集无效.无法使用无效字符集将内容读取为字符串.
我想这是因为该网站有一些瑞典字符,但我找不到如何更改响应的编码.任何人都可以指导我PLZ?
San*_*G B 23
您可能必须检查编码选项并获得正确的编码选项.否则,此代码应该让您继续响应.
private async Task<string> GetResultsAsync(string uri)
{
var client = new HttpClient();
var response = await client.GetByteArrayAsync(uri);
var responseString = Encoding.Unicode.GetString(response, 0, response.Length - 1);
return responseString;
}
Run Code Online (Sandbox Code Playgroud)
如果您想要更通用的方法,请在我的 UWP 案例中执行以下操作,以防有人使用 Unicode,添加 if:
var response = await httpclient.GetAsync(urisource);
if (checkencoding)
{
var contenttype = response.Content.Headers.First(h => h.Key.Equals("Content-Type"));
var rawencoding = contenttype.Value.First();
if (rawencoding.Contains("utf8") || rawencoding.Contains("UTF-8"))
{
var bytes = await response.Content.ReadAsByteArrayAsync();
return Encoding.UTF8.GetString(bytes);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14228 次 |
最近记录: |