2016-05-12 15 views
0

Ich habe eine REST-API erstellt und möchte sie mit meiner Xamarin.iOS-Anwendung verwenden. Grundsätzlich möchte ich die API aus meiner Xamarin-Anwendung aufrufen, indem ich einige Argumente an eine der API-Funktionen sende.Wie verbraucht man REST API in Xamarin.iOS?

Ich habe versucht, die verfügbaren Ressourcen auf Xamarins offiziellen Website, aber ich bin ein Neuling, so kann ich nicht verstehen, wie es gemacht wurde. Die REST-API wird lokal von dem Netzwerk gehostet, das ich verwende. Es wird nicht auf einer statischen IP gehostet. Bitte führen Sie mich.

+0

Dies ist ein sehr weites Thema. Xamarin hat hier einen guten Überblick: https://developer.xamarin.com/guides/xamarin-forms/web-services/consuming/rest/. Wenn Sie Schwierigkeiten haben, dem zu folgen, wäre es hilfreich, wenn Sie eine bestimmte Frage zu den Teilen stellen, die Sie nicht verstehen. – Jason

+0

Verwenden Sie RestSharp Plug-in, können Sie es von Xamarin Plugin-Store erhalten. Ich benutze es persönlich und mache die Arbeit großartig. – qasimalbaqali

Antwort

0

Ich würde Refit empfehlen, können Sie es als NuGet-Paket installieren. Es ist einfach zu benutzen.

Refit ermöglicht es uns, eine Schnittstelle zu definieren, die die von uns aufgerufene API beschreibt, und das Refit-Framework behandelt den Aufruf des Service und die Deserialisierung der Rückgabe.

Werfen Sie einen Blick auf diesen großartigen Blogpost, wie Sie ihn einrichten und andere Pakete, die Ihnen helfen könnten. http://arteksoftware.com/resilient-network-services-with-xamarin/

Ich habe RestSharp vorher verwendet, aber Refit ist viel einfacher zu laufen.

0

Sie brauchen nicht wirklich ein schickes Plugin, wenn Sie nur Web Endpoints treffen wollen. Ich benutze einfach die grundlegende WebRequest API.

var request = WebRequest.CreateHttp(YOUR_URL_HERE); 
request.Method = "GET"; 
request.ContentType = "application/JSON"; 
request.BeginGetResponse(ResponseComplete, request); 

... und dann können Sie Ihre Antwort Methode etwas entlang der Linien von ...

protected void ResponseComplete(IAsyncResult result) 
{ 
    try 
    { 
     var request = result.AsyncState as HttpWebRequest; 
     if (request != null) 
     { 
      Debug.WriteLine("Completed query: " + request.RequestUri); 
      using (var streamReader = new StreamReader(response.GetResponseStream())) 
      { 
       var result = streamReader.ReadToEnd(); 
       Debug.WriteLine("Query Result: " + result); 
      } 
     } 
    } 
} 

... und wenn Sie Daten veröffentlichen müssen, können Sie request.BeginGetRequestStream(PostData, request); vor request.BeginGetResponse(ResponseComplete, request); hinzufügen und machen Ihre GetRequestStream-Behandlungsmethode etwas in Richtung der ...

protected void PostData(IAsyncResult result) 
{ 
    var request = result.AsyncState as HttpWebRequest; 
    if (request != null) 
    { 
     using (var postStream = request.EndGetRequestStream(result)) 
     { 
      var json = JsonConvert.SerializeObject(DATA_TO_POST); 
      Debug.WriteLine("Posting data: " + json); 
      var byteArray = Encoding.UTF8.GetBytes(json); 
      postStream.Write(byteArray, 0, byteArray.Length); 
     } 
    } 
}