是否可以通过java.net访问具有204响应代码的站点的html?

时间:2011-09-27 01:09:30

标签: java http response

我正在尝试使用java.net包类阅读网站。该网站有内容,我在浏览器中的html源实用程序中手动查看。当我获得其响应代码并尝试使用java查看该站点时,它成功连接但将该站点解释为没有内容的站点(204代码)。发生了什么,是否可以自动查看html。

感谢您的回复: 你需要这个URL吗?

这是代码:

   URL hef=new URL(the website); 
   BufferedReader kj=null;
   int kjkj=((HttpURLConnection)hef.openConnection()).getResponseCode();
   System.out.println(kjkj);
    String j=((HttpURLConnection)hef.openConnection()).getResponseMessage();
   System.out.println(j);
   URLConnection g=hef.openConnection();
   g.connect();

   try{
           kj=new BufferedReader(new InputStreamReader(g.getInputStream()));


     while(kj.readLine()!=null)
     {
         String y=kj.readLine();

         System.out.println(y);
      } 
   }

    finally
    {
         if(kj!=null)
        {
            kj.close();
         }
    }


   }

1 个答案:

答案 0 :(得分:1)

建议:

  • 断言比手动访问网站时(使用网络浏览器客户端),您实际上获得了200返回代码
  • 确保从自动(基于java)逻辑发出的HTTP请求与交互式Web浏览器客户端发送的HTTP请求类似/相同。特别是,请确保 User-Agent 相同(某些网站会根据代理故意改变其响应)。
  • 您可以使用数据包嗅探器,可能类似于Fiddler2,以确切了解向/从服务器发送和接收的内容
  • 我不确定java.net包是否可识别机器人,但这也是一个因素(你可以检查底层网站是否有robot.txt文件)。 < / LI>

编辑:
假设您使用的是java.net包的HttpURLConnection类,则“机器人”假设不适用。
另一方面,您可能希望使用连接的setRequestProperty()方法为请求准备所需的HTTP标头(因此它们与Web浏览器客户端匹配) 也许您可以发布代码的相关部分。