2016-11-25 1 views
0

WebAPI 백엔드 (여러 응용 프로그램에서 사용되는)에 대한 매우 간단한 REST 쿼리가 있으며 Android 및 Windows에서는 제대로 작동하지만 iOS에서는 "Object reference not 개체의 인스턴스로 설정 "오류가 발생했습니다. 아래 코드에서 moHttpClient와 loUri가 모두 인스턴스화됩니다. 나는 Device.BeginInvokeOnMainThread에서 GetEmployeeRecord에 대한 호출을 래핑하려고했지만 그 역시 도움이되지 않습니다. Visual Studio와 Mac에서 Xamarin의 최신 안정 버전으로 업그레이드했습니다. iOS가 아닌 다른 OS에서 작동하는 이유는 무엇입니까?Xamarin Forms HttpClient iOS에서만 GetAsync가 실패 함

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가 모두 인스턴스화됩니다. 그러나 GetAsync에 마우스를 올리면 GetAsync가 알 수없는 멤버라는 메시지가 나타납니다. 어떻게 그렇게 될수 있니? Mouse over GetAsync

방금 ​​확인한 결과이 알 수없는 멤버도 Android에서 발생합니다. 그러나 Android에서는 실제로 실행됩니다.

+0

제공하신 URI에 404가 표시됩니다. moHttpClient 란 무엇입니까? 또한 귀하는 귀하의 웹 사이트에 celf-certs를 가지고 있는데, 그것은 역시 문제가 될 수 있습니다. 우리가 테스트하기를 원하는 경우 정확한 URI –

+0

을 제공하십시오. 그건 내 웹 사이트가 아니므로, 보안상의 이유로 실제 주소를 숨기려고합니다. URI에는 아무런 문제가 없으며 Android와 Windows에서 작동합니다. 네트워크/인터넷 액세스를 허용하기 위해 iOS 프로젝트에서 어떻게 든 설정해야한다고 생각합니다. 코드는 PCL에 있습니다. –

+0

그런 다음 예외에 중단 점을두고 어떤 객체가 null인지 확인하십시오. 나는 그것을 실행할 수없고 무엇이 null인지 알 수 없으면 더 많은 것을 도울 수 없다 –

답변

3

iOS에서 http 쿼리를 작동 시키려면 코드가 실행되는 PCL 프로젝트에 NuGet 패키지 Microsoft.Net.Http를 설치해야했습니다.