I would like the VB.net WebClient to remember cookies.
I have searched and tried numerous overloads classes.
I want to login to a website via POST, then POST to another page and get its contents whilst still retaining my session.
Is this possible with VB.net without using WebBrowser control ?
I tried Chilkat.HTTP and it works, but I want to use .Net libraries.
The WebClient class provides common methods for sending data to or receiving data from any local, intranet, or Internet resource identified by a URI. The WebClient class uses the WebRequest class to provide access to resources.
Create a new class the inherits from WebClient that stores the CookieContainer like @Guffa says. Here's code that I use that does that and also keeps the referer alive:
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
Here's the C# version of the above code:
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; } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With