none
Não consigo recuperar o Json na aplicação de consumo RRS feed

  • Pergunta

  • Na Web APi o XML carrega normalmente, segundo exemplo abaixo:

    http://localhost:10231/api/usuario <ArrayOfUsuario><Usuario><Id>1</Id><Nome>Fábio</Nome>...

    Mas na aplicação de consumo, uma Web Form no caso, ele não consegue recuperar o JSon

            public _Default()
            {
                if (client == null)
                {
                    client = new HttpClient();
                    client.BaseAddress = new Uri("http://localhost:10469");
    
                    client.DefaultRequestHeaders.Accept.Add(
                        new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 
                }
            }
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    getAll();
                }
            }
    
            private void getAll()
            {
                //chamando a api pela url
                System.Net.Http.HttpResponseMessage response = client.GetAsync("api/usuario").Result;
    
                //se retornar com sucesso busca os dados
                if (response.IsSuccessStatusCode)
                {
                    //pegando o cabeçalho
                    usuarioUri = response.Headers.Location;
                    
                    //Pegando os dados do Rest e armazenando na variável usuários
                    var usuarios = response.Content.ReadAsAsync<IEnumerable<Usuario>>().Result;
    
                    //preenchendo a lista com os dados retornados da variável
                    GridView1.DataSource = usuarios;
                    GridView1.DataBind();
                }
                
                //Se der erro na chamada, mostra o status do código de erro.
                else
                {
                    Response.Write(response.StatusCode.ToString() + " - " + response.ReasonPhrase);
                }
            }
    
    sábado, 8 de março de 2014 03:31

Todas as Respostas

  • Bom dia Fábio!

    Não entendi direito, sua api retorna Json ou XML?

    Se ela retornar json tente fazer alterar seu código do GetAll para seguinte forma:

    private void getAll() { //chamando a api pela urlvar response = await client.GetAsync("api/usuario"); //se retornar com sucesso busca os dados if (response.IsSuccessStatusCode) { //pegando o cabeçalho usuarioUri = response.Headers.Location; //Pegando os dados do Rest e armazenando na variável usuários var response = await response.Content.ReadAsStringAsync();

    var usuarios = JsonConvert.DeserializeObject<IList<Usuario>>(response);

    //preenchendo a lista com os dados retornados da variável GridView1.DataSource = usuarios; GridView1.DataBind(); } //Se der erro na chamada, mostra o status do código de erro. else { Response.Write(response.StatusCode.ToString() + " - " + response.ReasonPhrase); } }

    Caso a sua API retorna XML basta alterar o pedaço de código onde deserializa um json para um objeto, e colocar o código que deserializa um XML para um Objeto

    Espero ter ajudado

    quarta-feira, 2 de setembro de 2015 14:55