加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

vb.net – 如何让WebClient使用Cookie?

发布时间:2020-12-16 23:59:51 所属栏目:大数据 来源:网络整理
导读:我想要VB.net WebClient记住cookie。 我已经搜索并尝试过大量重载类。 我想通过POST登录到一个网站,然后POST到另一个页面,并获得其内容,同时仍保留我的会话。 这是可能的VB.net没有使用WebBrowser控件? 我尝试Chilkat.HTTP,它的工作原理,但我想使用.Ne
我想要VB.net WebClient记住cookie。

我已经搜索并尝试过大量重载类。

我想通过POST登录到一个网站,然后POST到另一个页面,并获得其内容,同时仍保留我的会话。

这是可能的VB.net没有使用WebBrowser控件?

我尝试Chilkat.HTTP,它的工作原理,但我想使用.Net库。

创建一个从WebClient继承的新类,它存储像@Guffa这样的CookieContainer。这里是我使用的代码,它也保持引用者的生存:
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

以下是上述代码的C#版本:

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;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读