2013-01-31 19 views
10

Çok basit bir ihtiyacım var - C# kodumun HTTP üzerinden uzak bir sunucuya bağlanması ve bir dizge indirmesi gerekiyor. Önemsiz bir GET isteği, başka bir şey değil. .NET 4.5'ten HTTP üzerinden bir dize nasıl karşıdan yüklenir?

Ben de operasyon hakkında bir zaman aşımı (diyelim ki, 3 saniye) empoze etmek istiyorum başvurum duyarlı kalmasını sağlamak.

ilk düşüncem System.Net.WebClient kullanmak, ama bu hiçbir zaman aşımları desteklememektedir.

O zaman iyi eski System.Net.HttpWebRequest'u denemek istedim, ancak alas - .NET 4.5'den beri been marked as obsolete!

Peki ne kullanabiliriz? Ben System.Net.Http ad teslim, ancak yalnızca asenkron kullanımı, kuvvetler Task s kullanmasına izin verir ve genellikle sadece (o kullandığından aynı eski System.Net.HttpWebRequest zaten altına)

gerçekten herhangi yeni işlevler eklemeden soyutlama bir düzine farklı katmanları ekler

Eşzamansız şeyler istemiyorum, diğer iş parçacıklarını da dahil etmek istemiyorum, Görevler çerçevesini dahil etmek istemiyorum, çok fazla sarmalayıcı istemiyorum.

.NET 4.5 Bu oyunda ne doğru yolu nedir?

+7

var değil. 'HttpWebRequest yapıcısını kullanmayın. Yeni HttpWebRequest objects.' – GSerg

+2

'u başlatmak için WebRequest.Create yöntemini kullanın. Zaman aşımı ayarlamak için WebClient async yöntemlerini kullanmaya devam edebilirsiniz: http://stackoverflow.com/a/601899/54937 –

+0

Aramaları her zaman "WebClient" olarak değiştirebilirsiniz. Bir arka plan iş parçacığına ve bir zaman aşımı olan bir tür (AutoResetEvent gibi) bir semafor kullanın. – Will

cevap

14

HttpWebRequest sınıf sadece kurucular, kaldırılmış değildir.

HttpWebRequest yapıcı kullanmayın:

documentation bahsetmek gerekirse. Yeni HttpWebRequest nesnelerini başlatmak için WebRequest.Create yöntemini kullanın. Tekdüzen Kaynak Tanımlayıcısı (URI) şeması http:// veya https:// ise, Create bir HttpWebRequest nesnesini döndürür.

+1

Bunu özledim. :) –

2

Yalnızca kurucu, HttpWebRequest sınıfının kendisinden değil, kullanımdan kaldırılmıştır. HttpWebRequest örneğini oluşturmak için WebRequest.Create kullanın. Bu `HttpWebRequest` kaldırılmış olması, onun kurucular

İlgili konular