[C#] Odpowiednik System.Net dla Universal App


(misza_88) #1

Czołem!
Zacząłem pisać apkę na Mobilnego Windowsa i już na samym początku spotkała mnie niemiła niespodzianka.
Mianowicie kod który działa dla aplikacji konsolowej/okienkowej nie bardzo chce zadziałać dla mobilnego windowsa.

Mianowicie chodzi o kod który pozyska mi ciasteczka ze strony. Kod dla konsolowej aplikacji wygląda tak:
using System.Net;
//[...]
request = (HttpWebRequest)WebRequest.Create(Constant.UriRoot);
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookies);

response = (HttpWebResponse)request.GetResponse();
cookies = response.Cookies;
response.Dispose();

Jednak gdy chcę go zastosować w mobilnych okienkach dostaję błędy przy
request.CookieContainer.Add(cookies);
Error CS1501 No overload for method ‘Add’ takes 1 arguments

response = (HttpWebResponse)request.GetResponse();
Error CS1061 ‘HttpWebRequest’ does not contain a definition for ‘GetResponse’ and no extension method ‘GetResponse’ accepting a first argument of type ‘HttpWebRequest’ could be found (are you missing a using directive or an assembly reference?)

Tak więc moje pytanie jest czym najlepiej zastąpić te metody aby pobrać ciasteczka?

PS. Formatowanie tekstu w nowym forum to porażka…


(mktos) #2

HttpWebRequest w UWP jest asynchroniczny - strzelam, że nie ma metody GetResponse, ale pewnie jest BeginGetResponse i tak dalej.

https://blogs.windows.com/buildingapps/2015/11/23/demystifying-httpclient-apis-in-the-universal-windows-platform/ - sekcja “Cookie Handling” powinna ci pomóc.

Ogólnie: bardzo wiele rzeczy ze “zwykłego” .NET-a w UWP ma inne API, najczęściej właśnie asynchroniczne. Poszukaj zastępstw, na przykład Windows.Web.HttpClient zamiast zwykłego WebRequesta.


(misza_88) #3

mktos dzięki serdeczne za odpowiedź.
Poradziłem sobie z problemem i było to łatwiejsze niż sobie to na początku wyobrażałem.