14

VS2012とそのAsyncAwaitキーワードを使用した非同期プログラミングについて学習しようとしています。それが私がこのコードを書いた理由です:

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);
}

問題は、アプリケーションをデバッグしようとすると、次のメッセージでエラーが発生することです。

ContentTypeで指定された文字セットが無効です。無効な文字セットを使用してコンテンツを文字列として読み取ることはできません。

これは、Webサイトにスウェーデン語の文字が含まれているためだと思いますが、応答のエンコーディングを変更する方法が見つかりません。誰でも私をplzに導くことができますか?

4

3 に答える 3

28

エンコード オプションを確認して、正しいオプションを取得する必要がある場合があります。それ以外の場合は、このコードで応答が得られるはずです。

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;
}
于 2012-09-02T16:46:08.807 に答える