Chamada de métodos MVC4 WebAPI do C # Metro UI Client usando PostAsync, HttpClient & Json

Criei um método usando os novos recursos da WebAPI no MVC4 e o execute no Azure. O método requer que você publique um objeto LoginModel simples que consiste em uma propriedade Nome de usuário e Senha. Sim, pretendo protegê-lo ainda mais depois de ultrapassar esse aumento de velocidade :-) O método responde com um objeto no formato Json:

Posso chamar esse método com êxito usando o Fiddler, desde que eu inclua "Content-Type: application / json" nos cabeçalhos da solicitação. Ele retorna com 200 e eu posso entrar no Fiddler Inspector e visualizar o objeto de resposta Json muito bem:

No entanto, estou tendo problemas para chamar esse mesmo método a partir de um aplicativo MetroUI no Windows8 usando C # / XAML. Comecei a brincar com o HttpClient e os novos conceitos de Async em C # e não importa como eu formatei minhas chamadas do Post (mesmo quando explicitamente gritando que eu quero que o Tipo de Conteúdo seja "application / json") O violinista retorna com um erro 500 e afirma que a tentativa estava usando o Tipo de Conteúdo: "text / html". Acredito que essa seja a raiz do problema:

Eu tentei de tudo o que é concebível para postar neste método e recuperar o objeto Json, aqui está minha tentativa mais recente:

HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        HttpContent content = new StringContent(@"{ ""Username"": """ + Username.Text + @", ""Password"": """ + Password.Text + @"""}");

        client.PostAsync("http://myapi.com/authentication", content).ContinueWith(result =>
        {
            var response = result.Result;

            response.EnsureSuccessStatusCode();
        });

Isso resulta em um erro 500 com o Tipo de conteúdo definido como "text / html"

Aqui foi outra tentativa que também falhou:

HttpClient httpClient = new HttpClient();
HttpResponseMessage response = await httpClient.PostAsync("http://myapi.com/authentication", new StringContent(@"{ ""Username"": """ + Username.Text + @", ""Password"": """ + Password.Text + @"""}", Encoding.UTF8, "application/json"));
string statusCode = response.StatusCode.ToString();

Alguém pode me apontar na direção certa

Apenas tentei o seguinte código, graças aos conselhos de Nemesv:

HttpClient httpClient = new HttpClient();
        HttpContent content = new StringContent(@"{ ""Username"": """ + Username.Text + @", ""Password"": """ + Password.Text + @"""}");
        content.Headers.ContentType = new MediaTypeHeaderValue("application/json");


        HttpResponseMessage response = await httpClient.PostAsync("http://webapi.com/authentication", content);

        string statusCode = response.StatusCode.ToString();
        response.EnsureSuccessStatusCode();

Agora mostra "application / json" no cabeçalho da minha solicitação, mas ainda mostra "text / html" na Web Session:

questionAnswers(4)

yourAnswerToTheQuestion