gpt4 book ai didi

c# - 同一 session 中的多个 WebRequest

转载 作者:技术小花猫 更新时间:2023-10-29 12:13:41 25 4
gpt4 key购买 nike

我正在尝试编写一个将网页(及其图像)保存为 html 页面的函数。我正在使用 HttpWebRequest 请求网页内容。我的函数看起来像

void SaveUrl(string sourceURL, string savepath)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(sourceURL);
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
StreamReader responseReader = new StreamReader(response.GetResponseStream());

string sResponseHTML = responseReader.ReadToEnd();
using (StreamWriter sw = new StreamWriter(savepath, false))
{
sw.Write(sResponseHTML);
}

string[] ImageUrl = GetImgLinks(sResponseHTML);
foreach (string imagelink in ImageUrl)
{
HttpWebRequest imgRequest = (HttpWebRequest)WebRequest.Create(imagelink);
HttpWebResponse imgresponse = (HttpWebResponse)imgRequest.GetResponse();
//Code to save image
}
}

我的问题是我想在同一个 session 中创建所有 web 请求,而不想为每个 imgRequest 创建一个新 session ,因为我网页上的许多图像都是动态生成的并临时存储。所以只有当我在同一个 session 中发出请求时才能获取这些图像。

最佳答案

session 通常通过使用 cookie 来工作。如果您希望所有请求都属于同一个 session ,则需要在请求之间保留 cookie。为此,您可以创建一个 CookieContainer 并将其提供给每个 HttpWebRequest 对象。

您的代码已更新为使用 CookieContainer:

    void SaveUrl(string sourceURL, string savepath) {
CookieContainer cookies = new CookieContainer();
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(sourceURL);
webRequest.CookieContainer = cookies;

HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
StreamReader responseReader = new StreamReader(response.GetResponseStream());

string sResponseHTML = responseReader.ReadToEnd();
using (StreamWriter sw = new StreamWriter(savepath, false)) {
sw.Write(sResponseHTML);
}

string[] ImageUrl = GetImgLinks(sResponseHTML);
foreach (string imagelink in ImageUrl) {
HttpWebRequest imgRequest = (HttpWebRequest)WebRequest.Create(imagelink);
imgRequest.CookieContainer = cookies;
HttpWebResponse imgresponse = (HttpWebResponse)imgRequest.GetResponse();
//Code to save image
}
}

关于c# - 同一 session 中的多个 WebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/787857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com