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(); }
都404了,你下载的东西还对吗?
试试StreamReader,
using (var response = webRequest.GetResponse()) { using (var sr = new StreamReader(response.GetResponseStream())) { var html = sr.ReadToEnd(); } }
这个方法试过了,也不行。不信的话可以亲自试一下那个网址。我怀疑WebException.Response取到的数据长度有限制,最长为65536字节,是16位无符号整数的长度。