2

Ich versuche, eine portable App mit REST-Dienst zu verbinden. Ich verwende Visual Studio 2015 Enterprise Edition.So rufen Sie REST Api in Xamarin.forms auf Portable App in Visual Studio 2015

Rest Service wird lokal veröffentlicht, was mit der URL funktioniert.
Wenn ich versuche, meinen Restdienst in Anwendung zu rufen. Es wird eine Ausnahme ausgelöst:

{System.Threading.Tasks.TaskCanceledException} mit "Ein oder mehrere Fehler aufgetreten."

C# -Code in ServiceWrapper.cs:

public async Task<string> GetData() 
     { 
      try 
      { 
       var client = new HttpClient(new NativeMessageHandler()); 
       client.BaseAddress = new Uri("http://ipaddress/"); 
       client.DefaultRequestHeaders.Accept.Add(
       new MediaTypeWithQualityHeaderValue("application/json")); 
       var response = client.GetAsync("IRESTApi.svc/xml/12").Result; 
       string content = await response.Content.ReadAsStringAsync(); 
       return content; 
       //using (var client = new HttpClient()) 
       //{ 
       // var result = await client.GetAsync("http://ipaddress/IRESTApi.svc/xml/12"); 
       // return await result.Content.ReadAsStringAsync(); 
       //} 
      } 

      catch (Exception ex) 
      { 
       var t = ex.Message; 
       return t; 
      } 
     } 

ich oben Methode versuchen this Referenz in Android-Gerät verwenden. Bitte helfen Sie.

+0

Können Sie die innere Ausnahme überprüfen? Es sagt, es gibt mehrere Fehler, es sollte irgendwo einige Details sein :) Auch ist dieser Fehler auf Android, iOS? –

+0

Als eine Randnotiz, sollten Sie diese "client.GetAsync (" IRESTApi.svc/xml/12 "). Ergebnis" mit diesem 'warten client.GetAsync (" IRESTApi.svc/xml/12 ")'. Verwenden Sie "erwarten" wann immer Sie können und ich kann keinen Grund finden, es nicht in Ihrem Kontext zu verwenden. – user3185569

+0

@GeraldVersluis Ich habe es für Android-Gerät erwähnt. und innexception ist "{System.Threading.Tasks.TaskCanceledException}". – Priya

Antwort

0

Versuchen Sie dieses: D

public interface IGetData 
    { 
     Task<string> GetApiData(); 
    } 

    public class GetData : IGetData 
    { 

    public async Task<string> GetApiData() 
    { 
     var client = new HttpClient(); 
     var response = await client.GetAsync(string.Format("http://mysite/api/Data")); 
     var responseString = await response.Content.ReadAsStringAsync(); 
     return responseString; 
    } 

    } 
+0

Ich habe diesen Code bereits in meiner Frage ausprobiert.Es zeigt 'Frame nicht im Modul' Fehler. – Priya