2013-09-28 1 views
0

Quelqu'un pourrait m'aider, je suis en train de retourner une liste de catégories, mais vient null. Quelqu'un sait-il pourquoi?consommer web api: ne fonctionne pas

contrôleur WEB:

public ActionResult MontaEstruturaCategoria() 
    { 
     ViewBag.Estilo = "none"; 

     HttpClient client = new HttpClient(); 
     client.BaseAddress = new Uri(ConfigurationManager.AppSettings["UrlAPI"]); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

     var id = Session["UserId"]; 

     var url = "api/categoria/" + id; 

     HttpResponseMessage response = client.GetAsync(url).Result; 

     if (response.IsSuccessStatusCode) 
     { 
      var categoria = response.Content.ReadAsAsync<IEnumerable<Categoria>>().Result; 

      return PartialView("ListaCategoria", categoria); 
     } 
     else 
     { 
      string msg = response.IsSuccessStatusCode.ToString(); 
      throw new Exception(msg); 
     } 
    } 

mais cette ligne est de retour.

var categoria = response.Content.ReadAsAsync>() Résultat;

 [0] = [ControleFinanceiro.Models.Categoria] 
     [1] = null 
     [2] = null 
     [3] = null 
     [4] = null 
     [5] = null 
     [6] = null 
     [7] = null 
     [8] = null 
     [9] = null 
     [10] = null 

JSON API RETOUR WEB:

 [{"$id":"1","intCategoriaId":2,"strCategoriaNome":"Receitas","intCategoriaPaiId":0,"intCategoriaOrdem":2,"intUsuarioId":1,"Usuario":{"$id":"2","intUsuarioId":1,"strUsuarioNome":"Jose Henrique Borges da Costa Filho","strUsuarioEmail":"[email protected]","strUsuarioSenha":"1","Categoria":[{"$ref":"1"},{"$id":"3","intCategoriaId":3,"strCategoriaNome":"Salario","intCategoriaPaiId":0,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"4","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"3"}]}},{"$id":"5","intCategoriaId":4,"strCategoriaNome":"UNIDAX","intCategoriaPaiId":0,"intCategoriaOrdem":3,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"6","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"4"}]}},{"$id":"7","intCategoriaId":8,"strCategoriaNome":"Freela","intCategoriaPaiId":4,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"8","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"8"}]}},{"$id":"9","intCategoriaId":9,"strCategoriaNome":"Vendas","intCategoriaPaiId":2,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"10","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"9"}]}},{"$id":"11","intCategoriaId":14,"strCategoriaNome":"Pessoal","intCategoriaPaiId":4,"intCategoriaOrdem":3,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"12","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"14"}]}},{"$id":"13","intCategoriaId":15,"strCategoriaNome":"Academia","intCategoriaPaiId":18,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"14","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"15"}]}},{"$id":"15","intCategoriaId":16,"strCategoriaNome":"SwissPark","intCategoriaPaiId":4,"intCategoriaOrdem":2,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"16","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"16"}]}},{"$id":"17","intCategoriaId":17,"strCategoriaNome":"Supermercado","intCategoriaPaiId":14,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"18","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"17"}]}},{"$id":"19","intCategoriaId":18,"strCategoriaNome":"Carro","intCategoriaPaiId":17,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"20","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"18"}]}},{"$id":"21","intCategoriaId":19,"strCategoriaNome":"Teste","intCategoriaPaiId":15,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"22","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"19"}]}}],"Contato":[{"$id":"23","intContatoId":6,"strContatoNome":"Danielle Ramos Tonhai","strContatoCelular":"(19) 98765-8790","strContatoFixo":"(19) 3245-7869","strContatoEmail":"[email protected]","strContatoEndereco":"Rua Santos","strContatoComplemento":"casa","strContatoBairro":"Jardim Londres","strContatoCidade":"Campinas","strUFId":"SP","strContatoCEP":"13098-098","intUsuarioId":1,"UF":{"$id":"24","strUFId":"SP","strUFNome":"São Paulo","Contato":[{"$ref":"23"}],"EntityKey":{"$id":"25","EntitySetName":"UF","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"strUFId","Type":"System.String","Value":"SP"}]}},"Usuario":{"$ref":"2"},"EntityKey":{"$id":"26","EntitySetName":"Contato","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intContatoId","Type":"System.Int32","Value":"6"}]}}],"EntityKey":{"$id":"27","EntitySetName":"Usuario","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intUsuarioId","Type":"System.Int32","Value":"1"}]}},"EntityKey":{"$id":"28","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"2"}]}},{"$ref":"3"},{"$ref":"5"},{"$ref":"7"},{"$ref":"9"},{"$ref":"11"},{"$ref":"13"},{"$ref":"15"},{"$ref":"17"},{"$ref":"19"},{"$ref":"21"}] 

Répondre

0

Dans le JSON vous mis en ligne ... c'est un tableau avec un élément. Si vous avez utilisé Newtonsoft désérialiser l'objet, vous pourriez vous retrouver avec quelque chose comme ceci:

var client = new WebClient(); 
var firstElement = JArray.Parse(client.DownloadString(url))[0]; 
var categories = firstElement.Usuario.Categoria; 

Je pense que cela fonctionnerait. Vous devez forer un peu pour obtenir la liste des catégories.