Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpWebRequest GetResponse已重定向_C#_Asp.net Mvc_Httpclient_Httpwebresponse_System.net.httpwebrequest - Fatal编程技术网

C# HttpWebRequest GetResponse已重定向

C# HttpWebRequest GetResponse已重定向,c#,asp.net-mvc,httpclient,httpwebresponse,system.net.httpwebrequest,C#,Asp.net Mvc,Httpclient,Httpwebresponse,System.net.httpwebrequest,感谢您的回复!对不起,我的问题搞错了,所以我将我的问题重新表述如下: 我需要从一个内部网站的旧aspx页面中读取一些文本值 当我直接把url放到新打开的浏览器中时,第一次,它被重新定向到默认页面,我需要点击一个链接来获得我想要的页面;然后我在同一个浏览器窗口中输入相同的url,再次按Enter键,它进入正确的页面,一切看起来都很好。我认为第二次有效,因为建立了一些会话变量 如何从代码中实现这一点?当我使用下面的代码尝试读取该页面(webReq.GetResponse())时,我可以从Fiddle

感谢您的回复!对不起,我的问题搞错了,所以我将我的问题重新表述如下:

我需要从一个内部网站的旧aspx页面中读取一些文本值

当我直接把url放到新打开的浏览器中时,第一次,它被重新定向到默认页面,我需要点击一个链接来获得我想要的页面;然后我在同一个浏览器窗口中输入相同的url,再次按Enter键,它进入正确的页面,一切看起来都很好。我认为第二次有效,因为建立了一些会话变量

如何从代码中实现这一点?当我使用下面的代码尝试读取该页面(webReq.GetResponse())时,我可以从Fiddler中看到它首先命中了我想要的页面,然后被重定向到该站点的default.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);
     ...
}

你能看一看上面给出的例子吗;或者???@Mohamad,谢谢,我添加了missed webReq.Credentials=CredentialCache.DefaultCredentials,但仍然不工作…从浏览器使用fiddler跟踪流量,特别是查找流量中的任何401身份验证挑战或身份验证头。登录后,如果您收到
301重定向
响应代码,您需要捕获重定向URI并按照重定向获得
200 OK
。嗨#startover,请尝试压缩然后解压缩您的webReq响应,如此链接所示: