感谢您的回复!抱歉,我的问题弄错了,所以我将我的问题改写如下:
我需要从一个内部网站的旧 aspx 页面之一读取一些文本值。
当我直接将网址放入新打开的浏览器中时,第一次,它被重定向到默认页面,我需要单击链接以获取我想要的页面;然后我在同一浏览器窗口中输入相同的网址并再次按 Enter,它转到正确的页面,一切看起来都不错。我认为第二次有效是因为建立了一些会话变量。
如何从代码中实现此目的?当我使用以下代码尝试读取该页面(webReq.GetResponse(((时,我可以从Fiddler看到它首先到达了我想要的页面,然后它被重定向到该站点的默认.aspx - 就像我第一次使用新的浏览器窗口手动执行此操作一样。
这是代码,我第二次尝试调用webReq.GetResponse((,但Fiddler没有为我的第二次调用显示任何流量。有什么建议吗?-谢谢!
string url = "http://mycompany.com/page1.aspx";
HttpWebRequest webReq = (HttpWebRequest)HttpWebRequest.Create(url);
try
{
webReq.CookieContainer = new CookieContainer();
webReq.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko";
webReq.Method = "GET";
webReq.Credentials = CredentialCache.DefaultCredentials;
using (WebResponse response = webReq.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream);
string res = reader.ReadToEnd();
...
}
}
}
catch (Exception ex)
{
...
}
感谢您的回复!
为了模仿它在浏览器中的工作方式,我必须使用HttpClient而不是HttpWebRequest,并调用GetStringAsync两次才能到达我需要去的页面,如下所示。
using (HttpClient client = new HttpClient())
{
var html = await client.GetStringAsync(url);
html = await client.GetStringAsync(url);
...
}