2016-11-25 3 views
0

У меня очень простой запрос REST на наш конец WebAPI (используется рядом приложений), и он отлично работает под управлением Android и Windows, но в iOS он не работает с «ссылкой на объект не установленный в экземпляр объекта «ошибка». В приведенном ниже коде экземпляры создаются как moHttpClient, так и loUri. Я попробовал обернуть вызов GetEmployeeRecord в Device.BeginInvokeOnMainThread, но это тоже не помогает. Я обновил до последней стабильной версии Xamarin в Visual Studio и на моем Mac. Почему он работает в других ОС, но не iOS?Xamarin Forms HttpClient GetAsync Fails только в iOS

private async void btnTest_Clicked(object sender, EventArgs e) 
    { 
     await GetEmployeeRecord(); 
    } 

    private async Task GetEmployeeRecord() 
    { 
     try 
     { 
      var loUri = new Uri("https://my.website.com/mobile.webapp/api/employees?key=6c6f2c06-a444-4e54-bd77-b5f594c29910"); 
      var loResponse = await moHttpClient.GetAsync(loUri); 
      if (loResponse.IsSuccessStatusCode) 
      { 
       var lcJson = await loResponse.Content.ReadAsStringAsync(); 
       await DisplayAlert("Employee", lcJson, "OK"); 
      } 
     } 
     catch (Exception ex) 
     { 
      Device.BeginInvokeOnMainThread(() => 
      { 
       DisplayAlert("Get Employee Record", ex.Message, "OK"); 
      }); 
     } 
    } 

Используя точку останова на линии GetAsync, создаются экземпляры как moHttpClient, так и loUri. Однако mousing over GetAsync дает сообщение о том, что GetAsync является неизвестным членом. Как это может быть? Mouse over GetAsync

Я только что проверил, и кажется, что этот Неизвестный участник встречается и с Android. Но с Android он фактически выполняется.

+0

Я получаю 404 на URI, который вы предоставили. Что такое moHttpClient? Также у вас есть celf-certs на вашем веб-сайте, и это тоже может быть проблемой. Если вы хотите, чтобы мы протестировали, пожалуйста, предоставьте правильный URI. –

+0

. Это не мой веб-сайт. Я просто помещаю это, чтобы замаскировать фактический адрес по соображениям безопасности. В URI нет ничего плохого, он работает с Android и Windows. Я подозреваю, что мне нужно как-то установить что-то в проекте iOS, чтобы разрешить доступ к сети/Интернету. Код находится в PCL. –

+0

Затем поставьте точку останова на свое исключение и проверьте, какой объект имеет значение null. Я не могу больше помочь, если не могу запустить его и посмотреть, что такое null –

ответ

3

Чтобы получить HTTP-запрос для работы в iOS, мне пришлось установить пакет NuGet Microsoft.Net.Http в проекте PCL, в котором находится код.

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