2016-12-08 2 views
0

Я действительно новичок в разработке Xamarin, и я просто попробовал Xamarin.Forms для разработки Android & Приложение iOS с общим кодом, и то, что я пытаюсь сделать здесь, - это получить данные из API с пакетом Plugin.RestClient NuGet.Xamarin HttpClient.GetStringAsync не работает на Xamarin.Droid

Вот мой MainViewModel.

public MainViewModel(){ 
    InitializeDataAsync(); 
} 

public async Task InitializeDataAsync(){ 
    var employeeServices = new EmployeeServices(); 
    EmployeesList = await employeeServices.getEmployeesAsync(); 
} 

А вот мои услуги

public async Task<List<Employee>> getEmployeesAsync(){ 
    RestClient<Employee> restClient = new RestClient<Employee>(); 
    var employeeList = await restClient.GetAsync("http://localhost:3000/employee"); 
    return employeeList; 
} 

И это мой RestClient

public async Task<List<T>> GetAsync(string WebServiceUrl){ 
    var httpClient = new HttpClient(); 
    var json = await httpClient.GetStringAsync(WebServiceUrl); 

    Debug.WriteLine(WebServiceUrl); 
    Debug.WriteLine(json); 

    var taskModels = JsonConvert.DeserializeObject<List<T>>(json); 
    return taskModels; 
} 

код отлично работает на моем iPhone эмулятора. Я могу видеть свой Debug для ответа URL и json. Но на моем Android-эмуляторе ничего нет в списке. Я даже не могу найти свой Debug для ответа url и json, я уже проверил свой вывод приложения и свой журнал устройств (я использовал Xamarin Studio для Mac btw).

Я также уже добавляю разрешение на использование Интернета в своем манифесте Android. Что мне делать?

ответ

1

Доступ только для localhost на вашем компьютере. Вам необходимо изменить localhost на IP-адрес машины, на которой размещен ваш api.

Так апите конечные точки

http://localhost:3000/employee 

должны быть что-то вроде

http://192.168.0.5:3000/employee 
0

Если вы получаете истекла ошибку, то это, вероятно, потому, что «локальный» в ОС Android означает телефона, который, вероятно, не там, где вы не используете веб-сервер. Есть несколько специальных IP-адресов, которые вы можете использовать при тестировании с помощью эмуляторов Android для достижения ОС хоста:

  1. Эмуляторы Google позволяют вам получить ОС хоста от 10.0.2.2.
  2. Эмулятор Microsoft Android позволяет вам добраться до ОС хоста от 169.254.80.80.

Вы можете попробовать изменить URL-адрес на основе типа используемого эмулятора. В качестве альтернативы вы можете вместо этого подключить свой IP-адрес рабочей станции, но это менее желательно, потому что оно может измениться.

Если это не позволяет вам добраться до сервера, вы можете рассмотреть любые брандмауэры, чтобы узнать, заблокирован ли ваш трафик.

Смежные вопросы