Senden von HTTP-Anforderungen aus der Xamarin Portable Class Library

Ich habe ganz anständige Probleme mit dieser sehr einfachen Aufgabe und bitte um Hilfe. Die Frage ist: Was ist die beste und zuverlässigste Möglichkeit, HTTP-Anforderungen mit Timeout von Xamarin PCL auszuführen?

Es gibt verschiedene Möglichkeiten:

Mit alten HttpWebRequest. Diese Lösung sollte auf jeden Fall funktionieren, aber ich habe Probleme mit der in dieser Frage beschriebenen BeginGetRequestStream-Methode:HttpWebRequest BeginGetRequestStream-Rückruf wurde nie aufgerufen Außerdem wird etwas hässlicher Code benötigt, um Timeouts korrekt zu implementieren.

HttpClient. HttpClient ist in PCL nicht sofort verfügbar (ich verwende Profil 158, das von MvvmCross-Bibliotheken benötigt wird). Ich habe versucht, Microsoft HTTP Client Libraries zu installieren, kann das PCL-Projekt jedoch immer noch nicht kompilieren. Der Fehler lautet:

Der Typ- oder Namespace-Name "Http" ist im Namespace "System.Net" nicht vorhanden. (Fehlt ein Assemblyverweis?)

PortableRest NuGet-Paket. Gleiches Problem - scheint in PCL nicht zu funktionieren. Viele Kompilierungsfehler und Warnungen, zum Beispiel:

Die Primärreferenz "System.Net.Http" konnte nicht aufgelöst werden, da sie eine indirekte Abhängigkeit von der Framework-Assembly "System.Runtime, Version = 1.5.11.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" aufweist, die in der nicht aufgelöst werden konnte derzeit angestrebter Rahmen. ".NETPortable, Version = v4.0, Profile = Profile158". Um dieses Problem zu beheben, entfernen Sie entweder den Verweis "System.Net.Http" oder richten Sie Ihre Anwendung erneut auf eine Framework-Version aus, die "System.Runtime, Version = 1.5.11.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" enthält. (MSB3268) (Prototype.Core)

Was mache ich falsch? Warum kann ich solche Standardbibliotheken nicht verwenden?

AKTUALISIEREN

Behebung des Problems durch Umstieg auf Profil 78 (.NET 4.5). Jetzt kann ich HttpClient verwenden, der viel besser und benutzerfreundlicher ist. Es funktioniert zuverlässig mit allen meinen Anfragen. MvvmCross-Bibliotheken funktionieren auch mit Profil 78 einwandfrei.

Das einzige Problem, das ich habe, ist der Mangel an Timer-Klasse. Vielleicht sollte ich es selbst mit Task.Delay implementieren.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage