2011-09-17 7 views
8

Próbuję przekonwertować istniejącą aplikację na aplikację Metro UI w VS 11 Developer Preview. Oznacza to uruchomienie w środowisku wykonawczym WinRT (popraw mnie, jeśli się mylę). Działa na podglądzie programisty Windows 8.Czy można zmodyfikować User-Agent dla WinRT HttpWebRequest?

Potrzebuję wywołać interfejs API REST, który wymaga ustawienia określonego klienta użytkownika. Wydaje się to niemożliwe w WInRT. Mam następujący oryginalny kod:

_request = WebRequest.CreateHttp(url); 
_request.UserAgent = UserAgent; 

Ale właściwość UserAgent nie jest zdefiniowana dla HttpWebRequest. Próbowałem również:

_request.Headers["User-Agent"] = UserAgent; 

Skutkuje to wyjątek środowiska wykonawczego: System.ArgumentException: Ten nagłówek musi być modyfikowane za pomocą odpowiedniego właściwości lub metody.

Jak mogę zmienić nagłówek User-Agent?

Odpowiedz

17

Po krótkim majsterkowaniu opracowałem sposób, w jaki można to zrobić w WinRT. Interfejs API HttpWebRequest został zmieniony w tej wersji, aby był dużo gorszy niż w pełnym .NET Framework. Jednak mogę wysłać wniosek z nowym HttpClient API, który pozwoli mi wysłać nagłówek User-agent:

var req = new HttpClient(handler) 
var message = new HttpRequestMessage(HttpMethod.Get, url); 
message.Headers.Add("User-Agent", "myCustomUserAgent"); 
var response = await req.SendAsync(message); 
+3

Wersja bibliotek .Net dostępna podczas pisania aplikacji WinRT z C# jest gorsza niż pełna, aby usunąć duplikaty. Ale pisząc tradycyjne aplikacje, nadal możesz korzystać z pełnego środowiska. – svick

+2

Sprawdź przykład HttpClient - http://code.msdn.microsoft.com/windowsapps/HttpClient-sample-55700664 – RredCat

1

Wystarczy zauważyć, że w systemie Windows 10 możliwe jest, aby zrobić to dokładnie tak, jak w przykładzie w twoim pytaniu.

Powiązane problemy