2016-11-25 77 views
0

我對我們的WebAPI後端(由許多應用程序使用)有一個非常簡單的REST查詢,它在Android和Windows下工作正常,但在iOS中,它失敗並顯示「Object reference not設置爲一個對象的實例「錯誤。在下面的代碼中,moHttpClient和loUri都被實例化了。我試過在Device.BeginInvokeOnMainThread中打包調用GetEmployeeRecord,但這也沒有幫助。我已經在Visual Studio和Mac上升級到Xamarin的最新穩定版本。爲什麼它在其他操作系統中工作,但不是iOS?Xamarin表單HttpClient GetAsync在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都被實例化。但是,在GetAsync上進行鼠標移動會提示GetAsync是未知成員。怎麼可能? Mouse over GetAsync

我剛剛檢查,似乎這個未知的成員與Android也發生。但是使用Android它實際上執行。

+0

我在您提供的URI上獲得404。什麼是moHttpClient?你的網站也有自己的證書,這也可能是問題。如果你想要我們測試,請提供正確的URI –

+0

這不是我的網站,我只是爲了掩蓋實際地址,出於安全原因。 URI沒有問題,它適用於Android和Windows。我懷疑我需要以某種方式在iOS項目中設置一些東西來允許網絡/互聯網訪問。代碼在PCL中。 –

+0

然後在你的異常上放置斷點並檢查什麼對象爲空。如果我不能運行它,看看什麼是空的,我不能幫助更多 –

回答

3

爲了讓http查詢適用於iOS,我必須在運行代碼的PCL項目中安裝NuGet包Microsoft.Net.Http。