.NET 4.8.1 VB.NET HttpClient设置Cookie代码求助
你之前的尝试方向是对的,但没把HttpClientHandler关联到HttpClient实例上,导致Cookie无法生效。下面是修正后的完整代码,包含手动设置Cookie的逻辑:
完整代码示例
' 1. 初始化Cookie容器并添加需要的Cookie Dim cookies As New CookieContainer() ' 替换成你需要的Cookie名称、值、路径和目标域名 cookies.Add(New Cookie("cookieName", "cookieValue", "/", ".somesite.com")) ' 2. 创建HttpClientHandler并绑定Cookie容器 Dim handler As New HttpClientHandler() handler.CookieContainer = cookies ' 3. 使用Handler创建HttpClient实例(这是关键步骤,之前你漏掉了) Using client As New HttpClient(handler) client.Timeout = TimeSpan.FromSeconds(3) ' 保留你原来的请求头设置 client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0") client.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8") client.DefaultRequestHeaders.Add("Accept-Language", "en-US,en;q=0.5") client.DefaultRequestHeaders.Add("Upgrade-Insecure-Requests", "1") client.DefaultRequestHeaders.Add("SEC-FETCH-DEST", "document") client.DefaultRequestHeaders.Add("SEC-FETCH-MODE", "navigate") client.DefaultRequestHeaders.Add("Referer", "https://www.somesite.com/") Using response As HttpResponseMessage = Await client.GetAsync(page) Using content As HttpContent = response.Content ' 获取页面内容 result = Await content.ReadAsStringAsync() End Using End Using End Using
关键说明
- 必须通过
HttpClientHandler的CookieContainer管理Cookie,再将该Handler传入HttpClient构造函数,请求才会携带设置的Cookie - 添加Cookie时,**域名(Domain)和路径(Path)**必须与目标网站匹配,否则Cookie不会被发送
- 若需添加多个Cookie,重复调用
cookies.Add()即可
内容的提问来源于stack exchange,提问作者JeffVB
相关产品推荐
相关产品推荐

