消费WEB API Xamarin表单

时间:2018-07-10 11:18:28

标签: xamarin asp.net-web-api xamarin.forms asp.net-web-api2

我有一个托管在服务器上的WEB API,那里有一个带有名称和描述的Products表。我已经检查过邮递员了,这很好,当我尝试通过Visual Studio在xamarin中实现该方法时,按名称记录并显示在列表视图中,我收到以下消息

不能隐式转换类型“ void”   “ System.Collections.Generic.List”

    public async void GetProductByName(string Name)

       {
            var client = new HttpClient(handler);
            client.Timeout = TimeSpan.FromSeconds(120);

            txtTest.Text = 
            "http://www.ProdutosAPITest6.hostname.com/api/products";
            var URI = txtTest.Text + "/" + Name.ToString();

            var requestMessage = new HttpRequestMessage
            {
                Method = HttpMethod.Get,
                RequestUri = new Uri(URI)
            };

            var response = await client.SendAsync(requestMessage);

            if (response.IsSuccessStatusCode == true)
            {
                var products = await response.Content.ReadAsStringAsync();

                var resultModel = JsonConvert.DeserializeObject<Product> 
                (products);
                return resultModel;
            }
      }


   MY CLASS

   namespace XF_ConsumingWebAPI.Models
   {
     public class Product
     {
       public int Id { get; set; }
       public string Name { get; set; }
       public string Description { get; set; }
     }
   }

    MY LISTVIEW


     public ListView myListView { get { return ProductsList; }}

        protected override async void OnAppearing()
         {
            var name = //pass name;
            List<ProductModel> products = await GetProductByName(Name);

              if (products.Count() > 0)
               { 
                 myListView.ItemsSource = products;
               }

           base.OnAppearing();
         }


     in the line List<Produto> products = await LoadData(Name); 

     I'm receiving the following message

     Can not implicitly convert type "void" in
    "System.Collections.Generic.List<XF_ConsumingWebAPI.Models.Product>"

1 个答案:

答案 0 :(得分:0)

尝试在GetproductByName函数中设置ItemSource而不是返回resultModel。 myListView.ItemSource = resultModel