2016-11-25 3 views
0

Ich habe eine sehr einfache REST-Abfrage zu unserem WebAPI-Backend (von einer Reihe von Anwendungen verwendet) und es funktioniert gut unter Android und Windows, aber in iOS schlägt es mit einem "Objektreferenz nicht auf eine Instanz eines Objekts gesetzt "Fehler. Im folgenden Code werden sowohl moHttpClient als auch loUri instanziiert. Ich habe versucht, den Aufruf von GetEmployeeRecord in Device.BeginInvokeOnMainThread umzulagern, aber das hilft auch nicht. Ich habe in Visual Studio und auf meinem Mac auf die neueste stabile Version von Xamarin aktualisiert. Warum funktioniert es in den anderen Betriebssystemen, aber nicht in iOS?Xamarin Formulare HttpClient GetAsync schlägt nur in iOS fehl

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"); 
      }); 
     } 
    } 

einen Haltepunkt an der Linie GetAsync können sowohl beim moHttpClient und Louri instanziiert werden. Das Mouse über GetAsync gibt jedoch eine Nachricht, dass GetAsync ein unbekanntes Mitglied ist. Wie kann das sein? Mouse over GetAsync

Ich habe gerade überprüft und es scheint, dass dieses unbekannte Mitglied mit Android auftritt. Aber mit Android wird es tatsächlich ausgeführt.

+0

Ich bekomme 404 auf URI Sie zur Verfügung gestellt. Was ist moHttpClient? Auch haben Sie auf Ihrer Web site celf-certs, das kann das Problem auch sein. Wenn Sie möchten, dass wir testen, geben Sie bitte die korrekte URI an. –

+0

Das ist nicht meine Website, ich habe sie nur eingefügt, um die tatsächliche Adresse aus Sicherheitsgründen zu maskieren. Es ist nichts falsch mit der URI, es funktioniert mit Android und Windows. Ich vermute, ich muss irgendwie etwas im iOS-Projekt einstellen, um den Netzwerk-/Internetzugang zu erlauben. Der Code befindet sich in der PCL. –

+0

Dann setzen Sie den Haltepunkt auf Ihre Ausnahme und prüfen Sie, welches Objekt Null ist. Ich kann nicht mehr helfen, wenn ich es nicht laufen lassen und sehen kann, was null ist –

Antwort

3

Um die http-Abfrage für iOS arbeiten zu können, musste ich das NuGet-Paket Microsoft.Net.Http im PCL-Projekt installieren, wo der Code läuft.

Verwandte Themen