2010-05-13 14 views
18

VB.net WebClient'in çerezleri hatırlamasını istiyorum.WebClient'i Çerezleri kullanmak için nasıl alabilirim?

Çok sayıda aşırı yüklenme sınıfını araştırdım ve denedim.

POST aracılığıyla bir web sitesine giriş yapmak, sonra başka bir sayfaya geçmek ve oturumumu hala korurken içeriğini almak istiyorum.

WebBrowser denetimi kullanmadan VB.net ile bu mümkün mü?

Chilkat.HTTP'yi denedim ve çalışıyor, ancak .Net kitaplıklarını kullanmak istiyorum.

cevap

44

@Guffa, CookieContainer gibi WebClient öğelerini içeren yeni bir sınıf oluşturun. İşte o bunu yapmaz kullanmak kod ve ayrıca canlı Yönlendireni tutar:

Public Class CookieAwareWebClient 
    Inherits WebClient 

    Private cc As New CookieContainer() 
    Private lastPage As String 

    Protected Overrides Function GetWebRequest(ByVal address As System.Uri) As System.Net.WebRequest 
     Dim R = MyBase.GetWebRequest(address) 
     If TypeOf R Is HttpWebRequest Then 
      With DirectCast(R, HttpWebRequest) 
       .CookieContainer = cc 
       If Not lastPage Is Nothing Then 
        .Referer = lastPage 
       End If 
      End With 
     End If 
     lastPage = address.ToString() 
     Return R 
    End Function 
End Class 

İşte yukarıdaki kod C# sürümü: öneri için

using System.Net; 
class CookieAwareWebClient : WebClient 
{ 
    private CookieContainer cc = new CookieContainer(); 
    private string lastPage; 

    protected override WebRequest GetWebRequest(System.Uri address) 
    { 
     WebRequest R = base.GetWebRequest(address); 
     if (R is HttpWebRequest) 
     { 
      HttpWebRequest WR = (HttpWebRequest)R; 
      WR.CookieContainer = cc; 
      if (lastPage != null) 
      { 
       WR.Referer = lastPage; 
      } 
     } 
     lastPage = address.ToString(); 
     return R; 
    } 
} 
+0

Bunu deneyeceğim. Teşekkür ederim. Diğer mirasa benzer, sonra bulduğu aşırı yük sınıfları. – Jeremy

+0

Bunu yıllardır mutlak başarı ile kullanıyorum. Eğer sizin için çalışmazsa, o zaman onun bir çerez/oturum sorunu değil, ama muhtemelen sizin düşündüğünüz web sitesi form durumunu değiştirmek için javascript kullanıyor. Eğer durum buysa, ya javascript'i kontrol edin ya da tel üzerinden neyin gönderildiğini görmek için sadece bir paket monitör ya da kemancı kullanın. –

+0

can1 bunu C# içinde gönderebilir ve problm da benzerdir, bunun için bir soru yayınladım ama ilgili cevapları alamadım .. cevap için arama yapın .. – FosterZ

4

WebClient sınıfının çerezleri hatırlayamazsınız, çerez kabını yanıttan almalı ve sonraki istekte kullanmalısınız.

+0

teşekkürler. – Jeremy

İlgili konular