首页新闻找找看学习计划

C# 下载404状态页面内容

0
悬赏园豆:5 [已关闭问题] 关闭于 2013-06-29 23:48
 1 try
 2 {
 3     response = request.GetResponse();
 4 }
 5 catch (WebException x)
 6 {
 7     response = x.Response;
 8 }
9 using (var stream = response.GetResponseStream()) 10 { 11 using (var ms = new MemoryStream()) 12 { 13 stream.CopyTo(ms); 14 data = ms.ToArray(); 15 } 16 } 17 var html = encoding.GetString(data);

上面是一个下载网页源码程序的局部代码。当http状态为404时,下载到的源码不完整,只有一部分。data.Length 最多只有 65536。请问这是什么原因,怎么才能下载到完整的404页面源码。

下面是一个示例网址:http://www.okbuy.com/product/search?top_key=fdfd

 

穷啊,没有园豆了,拜托热心的园友们了。

问题补充:

我写了个简单但完整的示例代码,愿意试的话可以试一下:

谁能把代码中网址的源码完整下载下来我给您跪了。

WebResponse resp;
try
{
    resp = WebRequest.Create("http://www.okbuy.com/product/search?top_key=fdfd").GetResponse();
}
catch (WebException x)
{
    resp = x.Response;
}
using (var rd = new StreamReader(resp.GetResponseStream()))
{
    var html = rd.ReadToEnd();
}
luotong的主页 luotong | 初学一级 | 园豆:5
提问于:2013-01-21 22:13
< >
分享
所有回答(3)
0

会不会是动态生成的,参考下这个帖子:http://q.cnblogs.com/q/45531/

滴答的雨 | 园豆:3690 (老鸟四级) | 2013-01-22 09:07
0

都404了,你下载的东西还对吗?

chenping2008 | 园豆:9836 (大侠五级) | 2013-01-22 09:11
0

试试StreamReader,

using (var response = webRequest.GetResponse())
{
    using (var sr = new StreamReader(response.GetResponseStream()))
    {
        var html = sr.ReadToEnd();
    }
}
dudu | 园豆:39058 (高人七级) | 2013-01-22 12:04

这个方法试过了,也不行。不信的话可以亲自试一下那个网址。我怀疑WebException.Response取到的数据长度有限制,最长为65536字节,是16位无符号整数的长度。

支持(0) 反对(0) luotong | 园豆:5 (初学一级) | 2013-01-24 00:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册