2013-01-30 8 views
28

Rozwijam aplikację, która ze względu na kod źródłowy nie mogę uaktualnić do nowego HttpClient, więc używam HttpWebRequests.Jak wyłączyć nagłówek "Expect: 100 continue" w HttpWebRequest WinRT

W .NET 4 możemy dezaktywować nagłówek Expect (na prośby o posty) za pomocą właściwości ServicePoint.Expect100Continue, ale na WinRT jest niedostępny.

Jak można tego dokonać na WinRT?

EDYCJA: System.Net.ServicePointManager.Expect100Continue jest również niedostępna.

+0

Nie można usunąć oczekiwania z kolekcji nagłówków żądania? – Ben

+0

Nie, ponieważ go tam nie ma, nagłówek jest automatycznie dodawany, gdy zaczynam czekać na odpowiedź. – DVD

+0

Czy próbowałeś grać przy użyciu właściwości ContinueTimeout (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.continuetimeout.aspx), ustawiając wartość -1 lub 0 dla wartości zerowej lub MaxValue. Wydaje się, że jest to jedyna właściwość powiązana obsługiwana przez wersję WinRT ... (bez funkcji ContinueDelegate, bez oczekiwań, bez SendChunked, bez ServicePoint) –

Odpowiedz

1

Wydaje się, że jedyną opcją jest nadpisanie BeginGetRequestStream. HttpWebRequest ma prywatną metodę MakeRequest i zawiera w niej nagłówek Expect100Continue do kolekcji nagłówków żądania.

+0

Jak mogę to zrobić ? Klasa HttpWebRequest ma wewnętrzny konstruktor ... – DVD

+1

Znalazłem lepsze rozwiązanie. Czy próbowałeś tego: HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create ("http: // something"); webRequest.Method = "POST"; webRequest.ServicePoint.Expect100Continue = false; –

+0

ta opcja nie jest dostępna w winrt XD – DVD

38
 var c = new HttpClient(); 
     c.DefaultRequestHeaders.ExpectContinue = false; 
+0

Jak już powiedziałem, nie mogę używać httpclienta – DVD

+0

Niestety, widziałem to po opublikowaniu. Niestety kod do modyfikacji właściwości HttpWebRequest ExpectContinue został jawnie zablokowany. To jedyny sposób, aby się go pozbyć. –

+0

Nie można znaleźć właściwości ExpectContinue: https://msdn.microsoft.com/en-us/library/windows/apps/windows.web.http.headers.httprequestheadercollection.aspx Czy czytam zły dokument? – Hong

10

Umieść to jest twój webconfig.

<system.net> 
<settings>  
<servicePointManager expect100Continue="false"/>   
</settings>  
</system.net> 

Działa również! Używam tego w moim webapplication. Ale odpowiedź powyżej jest równie dobra!

+0

Pytanie dotyczy konkretnie WinRT, czy tam też będzie działać? – svick

+0

Oops my bad ... I havent tried – 8bitcat

+0

Nie sądzę, że jest to opcja na Winrt, ponieważ ServicePointerManager nie istnieje XD. – DVD