再加个问题,在下载html文件时,HttpWebRequest得到的响应HttpWebResponse.ContentLength的值,和HttpWebResponse.GetResponseStream();后,再用StreamReader.ReadToEnd()方法读取的string的Length值不相等啊??请问怎么回事??

解决方案 »

  1.   

    我也想问你一个问题,你的程序要解析http地址吗?你是如果做到的?
      

  2.   

    你直接把网址传给HttpWebRequest.Create()不就行了吗?如果你要解析网页内的网址,我是用正则表达式和Uri类实现的!
      

  3.   

    是的,我是用正则表达式和Uri类实现的!写了1000多行,由于是公司的代码,不能给你!
      

  4.   

    把网页保存为string类型,用正则表达式找出里面的网址,主要是src和href后面的网址,把相对网址搞成绝对网址,用url  new一个Uri对象,就行了!
      

  5.   

    把相对网址搞成绝对网址
    就是这里搞不定,相对网址都有不同的写法,有些是从本目录算起,有些是从根目录算起。
    还有些就是写的绝对网址,还有些是其他网站的网址,搞得我头都变大了。
    还有php的,我靠,,,不知道IE怎么解析的。
      

  6.   

    我觉得这个东西自己写很难解决,人家都是遵照IE解析规范做的。
    要从根本上解决的话,需要得到IE的解析方法,不知道有没有这种东西。
      

  7.   

    不是的,
    src=xx/xx.gif   就是本层目录下的文件
    src=../xx/xx.gif   就是上层目录下的文件
    src=/xx/xx.gif   就是根目录下的文件
      

  8.   

    src=./xx/xx.gif             这种啊
    src=../../xx/xx.gif         这种啊
    千奇百怪,应有尽有。
    还有判断以后必须知道当前网页所在的目录!
    如果碰到一个上层目录,还要进行字符串操作,感觉就是一个字-----烦。
    我决定先找找看有没有IE的解析类或组件之类的玩意儿。
    硬是没有再自己动手,要充分体现我的“拿来主义”。
      

  9.   

    同时打开很多网页,本来就很可能发生超时的情况
    解决办法也只有减少同时请求的数量,并且请求失败后再试一次// 用StreamReader.ReadToEnd()方法读取的string的Length值不相等
    ContentLength值写多少就能写多少,只是一个http头的值,不一定相等的
      

  10.   

    谢谢 Sunmast(速马|Reloading...) 
    那是不是说,两者差一个http头的长度呢?能详细讲一下吗?StreamReader.ReadToEnd()方法读取的string就是实际的网页长度啊!to  SimerJoe(浪月):
    src=./xx/xx.gif 标识本层目录
    src=../../xx/xx.gif 可以用正则表达式替换掉!
    肯定要进行字符串操作的!
      

  11.   

    ContentLength值和string的Length值的却不同的!