我前几天在CSDN提过这个问题,当时认为解决了,所以把帖子结了。但是现在觉得还有问题。
上次问题详见
http://community.csdn.net/Expert/topic/5477/5477582.xml?temp=.1753656我按照他们说的写了如下程序,但测试时有问题
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;public class TestUrl2 {
public static void main(String[] args) throws IOException{
URL url = new URL("https://catalog.invitrogen.com/index.cfm?fuseaction=viewCatalog.viewProductDetails&productDescription=30495&");
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
String str = null;
while ((str = br.readLine()) != null)
System.out.println(str);
br.close();
}
}
我把该程序打印出的结果(也就是通过程序得到的源文件)复制下了,粘贴到记事本。然后在浏览器的地址栏里直接输入以下以下地址https://catalog.invitrogen.com/index.cfm?fuseaction=viewCatalog.viewProductDetails&productDescription=30495&并点浏览器的查看--查看源文件。也得到的一个文本文件。我发现两个文件是不一样的。说明这个程序有局限性,我测试过,只有纯静态网页才能得到正确的源文件,而对某些动态网页则不行,大家看一下怎么修改才好。谢谢

解决方案 »

  1.   

    需要把页面内要提交的property都加到你的请求request的里面来仿真原来页面的提交,如果提交的property不全,很可能被对方拦截器给拦截下来,从而把你的请求转到错误页面去~
    另外你可以看看HttpClient方式~
      

  2.   

    动态网页?解释脚本要浏览器支持的吧。你可以用COM来操作IE,或者改改Mozilla的源代码
      

  3.   

    直接访问https://catalog.invitrogen.com/index.cfm?fuseaction=viewCatalog.viewProductDetails&productDescription=30495&
    看到的是我想看到的内容。
    而通过程序访问则变成了一个让我先选择语言的页面。
    这个类似于访问论坛的时候,对同一个链接,登入与否看到的内容是不一样的。
      

  4.   

    你第一次通过浏览器访问该网站的时候把你的选择保存在cookie中了,所以再访问的时候不必再选择语言
      

  5.   

    ms你在程序里访问的时候,应该把cookie带上……
      

  6.   

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String url="https://catalog.invitrogen.com/index.cfm?fuseaction=viewCatalog.viewProductDetails&productDescription=30495&";
    URL destURL=null;
    URLConnection  urlConn=null;
    StringBuffer result = new StringBuffer("");
    try{
    destURL = new URL(url);
    urlConn = (URLConnection) destURL.openConnection();
                InputStream inStream = urlConn.getInputStream();
                inStream = new BufferedInputStream(inStream);
                Reader reader = new InputStreamReader(inStream,"GBK");
                int ch;
                while ((ch = reader.read()) >= 0) {
                        result.append((char) ch);
                }
                inStream.close();
    }
    catch(Exception e){
    e.printStackTrace();
    }
    System.out.println(result.toString());
    }
    试一下,两次获得的文件大小差不多
      

  7.   

    firefox_1983(上班-吃饭-下班-吃饭-上网-睡觉?) 
    你得到的源文件和我写的那个是一样的,
    如果没有先选择国家就访问这个链接会自动跳转到选择国家页面的,问题的关键就在这里