测试发现,当网页很庞大的时候,ServerXMLHTTP仅能获取一部分源代码:    Byte[] b = (Byte[])xmlhttp.responseBody;//数组最大值:163840,即:160*1024而用XMLHTTP则可以完整获取所有源代码,或者说XMLHTTP方式还没有达到最高限制?
请问高手这是为什么,以及如何采用ServerXMLHTTP获取完整的网页源代码?
测试网址:http://www.baidu.com/s?q1=%B2%E2%CA%D4&q2=&q3=&q4=&rn=100&lm=0&ct=0&ft=xls&q5=&q6=&tn=baiduadv

解决方案 »

  1.   

    本帖最后由 net_lover 于 2012-08-12 09:00:13 编辑
      

  2.   

    另外换测试网址发现其他网站可以正常获取完整源代码。我猜测可能是百度限制了每次包的大小最大为163840,如果超过这个数的网页就必须分割为多个包分别发送。而在多个包面前由于ServerXMLHTTP每次请求都不保存会话,并且独立于页面会话。而XMLHTTP则是保存会话并于IE请求同步cookie等的。所以当第二个包发送过来时,ServerXMLHTTP不能接收,而XMLHTTP则可以接收。如果上面猜测成立的话,那有什么办法可以使ServerXMLHTTP也能获取完整源代码吗?按理说ServerXMLHTTP比XMLHTTP更健壮的。另外我想请教一下ServerXMLHTTP异步模式下的waitForResponse的原理,或者源代码。我在XMLHTTP开启异步时用一个Timer来捕获异步完成,这种方式可以实现等待异步完成,就是不知道和waitForResponse是不是有效率上的差异。谢谢!