Guten Tag alle. Ich erstelle Xamarin.Forms Portable Anwendung in meinem Visual Studio 2015.Wie WebServiceURL in Xamarin.Forms-Projekt verbinden?
Ich möchte meine mobile Anwendung mit der SQL-Datenbank verbinden, die ich in meinem VS2015 habe und eine Liste der Kunden zurückgeben, die auf meinem Mobiltelefon angezeigt werden soll.
In meiner Lösung habe ich ein Xamarin Portable-Projekt und ein WebForms-Projekt erstellt, das meine Webdienste und die Datenbank verarbeiten wird.
In meinem WebForms-Projekt konnte ich mit LINQ-Ausdruck Daten aus der Datenbank abrufen. Ich überprüfte dies sogar mit WEB API und ich konnte wirklich Daten abrufen. Wie das Bild unten:
Was ich tun möchte, ist, diese Daten zu meinem Xamarin Tragbarer Projekt zugreifen RestClient verwenden. Ich habe die WebServiceUrl meines WebForms-Projekts verwendet, um die darin enthaltenen Daten abzurufen. Aber immer, wenn ich einen Breakpoint verwendet, um zu testen, ob es die Daten, abgerufen hat, gibt es keinen Wert zurück.
Bedeutung Ich werde nicht wirklich die LISTE DER KUNDEN anzeigen können.
Was denken Sie ist der Grund dafür?
Hier sind einige meiner Codes:
1.) WebForms
CustomerController.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Description;
using WebFormsDemo;
using WebFormsDemo.ViewModel;
namespace WebFormsDemo.Controllers
{
public class CustomerController : ApiController
{
private EBMSEntities db = new EBMSEntities();
// GET: api/Customer
public IQueryable<CustomerViewModel> GetCustomerViewModels()
{
var displaycustomerInfo = from cust in db.CUSTOMERs
select new CustomerViewModel
{
Id = cust.CUSTOMER_ID,
CUSTOMER_CODE = cust.CUSTOMER_CODE,
CUSTOMER_NAME = cust.CUSTOMER_NAME,
CUSTOMER_MOBILE_NUMBER = cust.CUSTOMER_MOBILE_NUMBER,
CUSTOMER_EMAIL_ADDRESS = cust.CUSTOMER_EMAIL_ADDRESS,
CUSTOMER_CONTACT = cust.CUSTOMER_EMAIL_ADDRESS + "," + " " + cust.CUSTOMER_MOBILE_NUMBER
};
return displaycustomerInfo;
}
}
}
2.) XamarinForms
RestClient.cs
public class RestClient_Customer <T>
{
private const string WebServiceUrl = "http://localhost:50857/api/Customer/";
public async Task<List<T>> GetCustomerAsync()
{
var httpClient = new HttpClient();
var json = await httpClient.GetStringAsync(WebServiceUrl);
var taskModels = JsonConvert.DeserializeObject<List<T>>(json);
return taskModels;
}
}
.
CustomerServices.cs
using Plugin.RestClient;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using XamarinFormsDemo.Models;
namespace XamarinFormsDemo.Services
{
public class CustomerServices
{
public async Task<List<Customer>> GetCustomerAsync()
{
RestClient_Customer<Customer> restClient = new RestClient_Customer<Customer>();
var customerList = await restClient.GetCustomerAsync(); //yung getasync ay pantawag as restclient
return customerList;
}
}
}
.
CustomerVM.cs
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Net.Http;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using Xamarin.Forms;
using XamarinFormsDemo.Models;
using XamarinFormsDemo.Services;
using XamarinFormsDemo.Views;
namespace XamarinFormsDemo.ViewModels
{
public class CustomerVM : INotifyPropertyChanged
{
private List<Customer> _customerList; // keep all customers
private List<Customer> _searchedCustomerList; // keep a copy for searching
private Customer _selectedCustomer = new Customer();
private string _keyword = "";
public string Keyword
{
get
{
return _keyword;
}
set
{
this._keyword = value;
// while keyword changed we filter Employees
//Filter();
}
}
private void Filter()
{
if (string.IsNullOrWhiteSpace(_keyword))
{
CustomerList = _searchedCustomerList;
}
else
{
// var lowerKeyword = _keyword.ToLower();
CustomerList = _searchedCustomerList.Where(r => r.CUSTOMER_NAME.ToLower().Contains(_keyword.ToLower())).ToList();
// EmployeesList = _searchedEmployeesList.Where(r => r.EMPLOYEE_NAME.Contains(_keyword)).ToList();
}
}
public List<Customer> CustomerList
{
get
{
return _customerList;
}
set
{
_customerList = value;
OnPropertyChanged();
}
}
public CustomerVM()
{
InitializeDataAsync();
}
private async Task InitializeDataAsync()
{
var customerServices = new CustomerServices();
_searchedCustomerList = await customerServices.GetCustomerAsync();
CustomerList = await customerServices.GetCustomerAsync();
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
HINWEIS: Bitte nehmen Sie einen genaueren Blick auf mein RestClient, ob ich es richtig oder nicht mache. Danke vielmals.
es Problem mit dem localhost sein könnte.Ich vermute, dass Ihr Telefon oder Emulator die localhost Adresse nicht finden kann. – batmaci
@batmaci Aber ich habe es in 2 weiteren Telefonen Sir versucht. Trotzdem bekomme ich das Gleiche. Sind meine Codes korrekt? –