Search code examples
c#asynchronouswindows-8

How to change the encoding of the HttpClient response


I'm trying to learn about Async programming using VS2012 and its Async Await keyword. That is why i wrote this piece of code:

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

The problem is that when i try to debug the application, it gives me an error with this message:

The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set.

I guess this is because the website have some Swedish char, but i can't find how to change the encoding of the response. Anyone can guide me plz?


Solution

  • You may have to check the encoding options and get the correct one. Otherwise, this code should get you going with the response.

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