Moje docelowe projekty to Windows 8, WinRT i Windows Phone 8. Używam Portable Class Libraries do rozwiązania w celu udostępniania źródeł. Potrzebuję wywołać niektóre usługi REST utworzone w innym projekcie MVC Web Api, ale klasa HttpClient
nie jest dostępna w PCL. Jakie byłoby dobre podejście do rozwiązania problemu? Myślałem w interfejsie usługi, a następnie, aby utworzyć projekt dla każdej platformy, przy użyciu HttpClient
, WebClient
lub odpowiedniej klasy w każdym przypadku. Takie podejście może działać, ale zastanawiałem się, czy istnieją inne sposoby.Jak wywoływać usługi REST z Portable Class Library?
Odpowiedz
HttpClient niekoniecznie jest przenośny z widoku Microsoftu. Jedyny inny sposób to utworzenie oddzielnych bibliotek, które każdy projekt będzie implementował, i wykonaj to, co opisałeś. W ten sposób możesz osiągnąć wspólne cechy na wszystkich platformach, na które chcesz kierować reklamy.
Pomyślałem, że istnieje pewien poziom równoważności, jeśli chodzi o platformy, na które kierujesz ... Jeśli musisz mieć oddzielne projekty, możesz połączyć swoje pliki kodu z innym projektem, aby nie trzeba było utrzymywać wiele projektów, a nawet używać Project Linker (choć nie wiem, czy istnieje wersja 2012).
Sidenote: Project Linker istnieje przed rokiem 2012: http: // visualstudiogallery .msdn.microsoft.com/273dbf44-55a1-4ac6-a1f3-0b9741587b9a –
Portable REST ostatnio stał się dostępny na GitHub i powinno pomóc dokonywania żądań internetowych podanych że WebClient jest niedostępna:
https://github.com/advancedrei/PortableRest#readme
PortableRest jest przenośnym Class Library dla wdrożenia API REST klientów w innych przenośnych Biblioteki klas. Wykorzystuje on szybką, dostosowywaną serializację JSON.NET, a także bibliotekę Microsoft.Bcl.Async , której można oczekiwać na dowolnej platformie. Został zaprojektowany, aby być w dużym stopniu kompatybilny z RestSharp, ale będziesz musiał dokonać pewnych zmian i rekompilacji.
Ta pierwsza wersja ma ograniczone wsparcie dla prostych żądań JSON. Więcej opcji (w tym XML i miejmy nadzieję wsparcie DataContract) będzie dostępne w kolejnych wydaniach.
Firma Microsoft ma numer rewritten the HttpClient
library to be portable (PCL) i jest to here on NuGet.
Na razie jest dostępna tylko w wersji wstępnej, więc jeśli używasz menedżera pakietów GUI NuGet, upewnij się, że ustawiłeś opcję "Uwzględnij wersję wstępną".
Z wiersza poleceń:
Install-Package Microsoft.Net.Http
Dość późno, ale tutaj jest prosty kod musiałem zrobić, PLC jest skierowany do wszystkiego z wyjątkiem Xbox 360 (może pracować zbyt). Nie mogłem użyć HttpClient dla tej listy docelowej.
public class WebDownload
{
public class WebDownloadResult
{
public HttpStatusCode StatusCode { get; set; }
public int StatusCodeNumber { get; set; }
public bool ErrorOccured { get; set; }
public string ResultString { get; set; }
}
public static void Download(string url, Action<WebDownloadResult> resultAction)
{
WebDownloadResult response = new WebDownloadResult();
try
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
IAsyncResult result = (IAsyncResult)myHttpWebRequest.BeginGetResponse(new AsyncCallback(delegate(IAsyncResult tempResult)
{
HttpWebResponse webResponse = (HttpWebResponse)myHttpWebRequest.EndGetResponse(tempResult);
Stream responseStream = webResponse.GetResponseStream();
using (StreamReader reader = new StreamReader(responseStream, Encoding.UTF8))
{
response.ResultString = reader.ReadToEnd();
response.StatusCode = webResponse.StatusCode;
response.StatusCodeNumber = (int)webResponse.StatusCode;
if (resultAction != null) resultAction(response);
}
}), null);
}
catch
{
response.ErrorOccured = true;
if (resultAction != null) resultAction(response);
}
}
}
dziekuje koleś, to jedyna rzecz, jaką mogłem uzyskać pracując w moim projekcie PCL. myśląc o budowaniu klienta REST na nim ..... – skhro87
To jest niesamowite! Nie jestem osobiście zbyt doświadczony w C# i PCL w ogóle, więc czy jest ktoś, kto mógłby mi powiedzieć, jak powinienem obsłużyć typ zwrotu "resultAction"?Muszę uzyskać dostęp do "ResultString" poza metodą "Pobierz", aby przeanalizować odpowiedź, którą otrzymałem. Z góry dziękuję. – Demitrian
- 1. Używanie Async CTP z Portable Class Library
- 2. Dostosowywanie .NET Portable Class Library Profiles?
- 3. Obsługa ViewModel w Portable Class Library
- 4. przy użyciu Json w Portable Class Library
- 5. ConcurrentBag Alternative In Portable Class Library
- 6. Entity Framework for Portable Class Library
- 7. Co się stało z .ToShortDateString w .NET Portable Class Library
- 8. Portable Class Library z async czekają & GetType() IsValueType
- 9. Jaka wersja Blend obsługuje WPF 4.5, Portable Class Library?
- 10. UserControls in Class Library
- 11. Odwołanie do PCL (Portable Class Library) z projektu Xamarin Mono na Androida
- 12. Zużywanie usługi REST z WCF
- 13. Class Library umożliwiają użycie nieprzypisane struktury
- 14. Tworzenie usługi Spring REST z interfejsem OData
- 15. Jak odróżnić usługi internetowe SOAP lub REST?
- 16. Usługa WWW REST usługi WSDL?
- 17. Warunki usługi i wyścigu REST
- 18. Używanie usługi Azure Active Directory jako usługi uwierzytelniania OAUTH2 dla usługi REST usługi rozruchu sprężynowego
- 19. Portable Area niekorzystne
- 20. Czy repozytorium powinno wywoływać inne repozytorium? Czy repozytorium może wywoływać warstwę usługi?
- 21. HTTP Put Enum przy użyciu usługi REST usługi JAX-RS
- 22. Używanie filtrów z serwerem Grizzly z usługą REST usługi Jersey
- 23. CodeIgniter REST API Library Ajax PUT throwing 403 Forbidden
- 24. Jak zlecić POST JSON do usługi REST Jersey?
- 25. Jak ustawić Json.Net jako domyślny serializer dla usługi WCF REST
- 26. Samouczek do budowania usługi REST w VB.NET?
- 27. Implementacja tokenu uwierzytelniania usługi REST Web Service
- 28. Boost Library, jak uzyskać wyznacznik z lu_factorize()?
- 29. Usługi sieciowe - REST a PHP JSON RPC
- 30. Usługi Web Service REST w języku C#
Możliwy duplikat: http://stackoverflow.com/questions/13547479/are-there-any-rest-libraries-out-there-that-work-with-portable-class-libraries –
http://blogs.msdn.com/b/dotnet/archive/2013/05/22/portable-httpclient-is-now-available-as-rc.aspx – SLaks