У меня очень простой запрос 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 является неизвестным членом. Как это может быть?
Я только что проверил, и кажется, что этот Неизвестный участник встречается и с Android. Но с Android он фактически выполняется.
Я получаю 404 на URI, который вы предоставили. Что такое moHttpClient? Также у вас есть celf-certs на вашем веб-сайте, и это тоже может быть проблемой. Если вы хотите, чтобы мы протестировали, пожалуйста, предоставьте правильный URI. –
. Это не мой веб-сайт. Я просто помещаю это, чтобы замаскировать фактический адрес по соображениям безопасности. В URI нет ничего плохого, он работает с Android и Windows. Я подозреваю, что мне нужно как-то установить что-то в проекте iOS, чтобы разрешить доступ к сети/Интернету. Код находится в PCL. –
Затем поставьте точку останова на свое исключение и проверьте, какой объект имеет значение null. Я не могу больше помочь, если не могу запустить его и посмотреть, что такое null –