在上一节说了由于跳转产生的返回htm数据不是预定数据的问题。这一节继续来说这个问题
Request对象有个UserAgent,让你标识浏览器版本,大部分的时候你可以随便写这个参数。
但是,有些网站是对浏览器是有要求的,并且完成了对应优化的。
比如MSN Space:如果你的浏览器版本不对,那么服务器返回的数据也不一样。
甚至有的时候在有些网站还利用javascript写cookies到浏览器客户端。这个浏览器客户端再传回cookies到服务器。
而Httpwebrequest在这一点上就非常无力。因为它只是一个解析http协议的class,而不是解析和运行网页的class
唯一的办法就是你模拟Cookie,但你的模拟代价太大
由于这些问题(版本,cookies等等)的影响,你从IE(firefox)浏览器获取到的html数据和httpwebrequest获取到的数据相差很多。
因而,当你在依据浏览器获取到的html制定解析模版分析httpwebrequest的数据时,你会发觉无论怎么样都找不到数据。
第二个要说的是,我所述的内容都是在.net 2.0基础上。
昨天有个朋友问了一个问题,说他获取到的数据是乱码,无论那种解码都是无效。
虽然发现问题的原因是html数据被压缩,但我这边httpwebrequest自动完成了解压缩的,因此没有解决问题。
后来查看某个msdn发现某个解压缩属性是出现在.net 2.0里面的,所以推断是.net的版本问题,一问果然是vb.net 2003.
然后今天他告诉我:解决了,版本问题。
因此提醒使用.net 2.0