我正在使用WebRequest
来阅读HTML网站。服务器似乎正在重定向我的请求。
我的代码类似于以下内容:
String URI = "http://www.foo.com/bar/index.html"
WebRequest req = WebRequest.Create(URI);
WebResponse resp = req.GetResponse();
StreamReader sr = new StreamReader(resp.GetResponseStream());
String returnedContent = sr.ReadToEnd();
当我检查returnedContent
的内容时,它包含来自重定向的内容,如“http://www.foo.com/FOO_BAR/index.html”。我确信我请求的URL存在,因为它是收到的响应的一部分(作为IFrame)。
有没有办法阻止重定向WebResponse
并获取所请求网址的内容?
更新
设置req.AllowAutoRedirect = false
会导致302 Found
州代码,但不会提供实际内容。
更多细节:
我要求的网址为http://www.foo.com/bar/index.html
我收到的内容位于http://www.foo.com/FOO_BAR/index.html
响应与此类似:
<body>
<div>
<iframe src="/foo/index.html"></iframe>
</div>
</body>
答案 0 :(得分:8)
您可以使用HttpWebRequest
的{{3}}:
…
var req = (HttpWebRequest)WebRequest.Create(URI);
req.AllowAutoRedirect = false;
…
答案 1 :(得分:0)
我知道这是一篇比较老的文章,但是我想分享我在特定情况下发现的内容...
我试图访问一个站点,以查看是否有特定的内容。我发现它一直从我请求的站点重定向到该站点的本地版本。我注意到一些cookie负责重定向。如果其他人遇到相同的问题,则可能有一个cookie或其他一些请求标头可供您使用,以防止重定向偏离您的预期目标。
就我而言,我要做的只是这样:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
//whatever other headers you need...
request.Headers.Add(HttpRequestHeader.Cookie, "ipRedirectOverride=true");
请注意,这只是一个示例,您的cookie名称/值可能不同