`
Franciswmf
  • 浏览: 797421 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

用Java判断一个URL

 
阅读更多

方法一:(可用于判断网络是否连通)

import java.io.InputStream;
import java.net.URL;


public class Test {
public static void main(String[] args) {
 URL url;
 try {
      url = new URL("http://www.baidu.com");
      InputStream in = url.openStream();
      System.out.println("连接可用");
 } catch (Exception e1) {
      System.out.println("连接打不开!");
      url = null;
 }
}
}

方法一使用java.net 下的URL类来实现,URL 是统一资源标识符的引用,一个URL实例代表着一个url的引用,然后使用了URL中的的openStream()方法。


方法二: (可判断某个URL地址否有效,但是对于有效但明明打不开的网址却不能反馈给我们期望的效果(期望false),实际true,看不到试图连接5次的效果)
import java.net.HttpURLConnection;
import java.net.URL;

/**
* 文件名称为:URLAvailability.java
* 文件功能简述: 描述一个URL地址是否有效
* @author Jason
* @time   2010-9-14
*
*/
public class URLAvailability {
private static URL url;
private static HttpURLConnection con;
private static int state = -1;

/**
   * 功能:检测当前URL是否可连接或是否有效,
   * 描述:最多连接网络 5 次, 如果 5 次都不成功,视为该地址不可用
   * @param urlStr 指定URL网络地址
   * @return URL
   */
public synchronized URL isConnect(String urlStr) {
   int counts = 0;
   if (urlStr == null || urlStr.length() <= 0) {                      
    return null;                
   }
   while (counts < 5) {
    try {
     url = new URL(urlStr);
     con = (HttpURLConnection) url.openConnection();
     state = con.getResponseCode();
     System.out.println(counts +"= "+state);
     if (state == 200) {
      System.out.println("URL可用!");
     }
     break;
    }catch (Exception ex) {
     counts++;
     System.out.println("URL不可用,连接第 "+counts+" 次");
     urlStr = null;
     continue;
    }
   }
   return url;
}
public static void main(String[] args) {
 URLAvailability u=new URLAvailability();
 u.isConnect("http://www.baidu.com");
}
}

方法二使用了java.net 下的URL和HttpURLConnection两个类来实现。它使用了HttpURLConnection 中的 getResponseCode();方法,HttpURLConnection : 通常一个HttpURLConnection 的实例可以生成一个请求,它有个方法getResponseCode();可以得到请求的响应状态,该方法返回一个 int 分别是 200 and 404 如无法从响应中识别任何代码则返回 -1。

******************************************************************************************************************************

//采集的时候用的两种方法

方法一:(与上面的方法一相同,URL的openStream()方法)

package com.tender.news.crawler;

import java.net.HttpURLConnection;

import java.net.URL;

public class URLOK {
 public static void main(String[] args) {
  URLOK uu=new URLOK();
  System.out.println(uu.exists("http://www.baidu.com"));
  // 广德县招投标中心
  System.out
    .println(uu.exists("http://www.baidu.com/link?url=pHkEGJqjJ4zBBpC8yDF8xDh8vibi1lxrIGZBdokH2t362q"));
 }
 //
 public  boolean exists(String URLName) {
  try {
   // 设置此类是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。
   HttpURLConnection.setFollowRedirects(false);
   // 到 URL 所引用的远程对象的连接
   HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection();
   /*
    * 设置 URL 请求的方法, GET POST HEAD OPTIONS PUT DELETE TRACE
    * 以上方法之一是合法的,具体取决于协议的限制。
    */
   con.setRequestMethod("HEAD");
   // 从 HTTP 响应消息获取状态码
   return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
  } catch (Exception e) {
   e.printStackTrace();
   return false;
  }
 }
}
方法二:(对于有效却打不开页面的URL能反馈给我们期望的结果false)

//判断网址是否可用
//   System.out.println(URLEncoder.encode("合肥","GBK"));
public   String   test(String str){
 String result="good";
 URL url=null;
 try{
 url=new URL(str);
// HttpURLConnection conn=null;
 /* try{
 conn = (HttpURLConnection) url.openConnection();}
 catch(Exception e){
  result="block";
 }
 conn.setConnectTimeout(5 * 1000); // timeout setting
*/ InputStream   in   =   url.openStream();
 in.close();
 }
 catch(IOException   e){
  e.printStackTrace();
 System.out.println( ":"   +   str.toString());
 result="block";
 }
 return result;
 }
//

通过采集下面的方法一和方法二可以很好的判断一个网站的连通性以及有效性,方便采集。

分享到:
评论

相关推荐

    java 判断两个网址的主机名是否一样

    在Java编程中,判断两个网址的主机名是否相同是一个常见的任务,这通常涉及到网络编程和URL对象的使用。下面我们将详细探讨如何实现这个功能,并深入理解相关知识点。 首先,URL(Uniform Resource Locator)是统一...

    使用java快速判断网页链接是否有效

    本方法通过`java.net.URL`类创建一个URL对象,并使用`java.net.HttpURLConnection`类打开与该URL的连接。然后发送一个HTTP HEAD请求,通过响应消息来判断链接是否有效。如果服务器返回“Not Found”,则认为链接无效...

    判断url是否是正确的Url

    判断url是否是正确的Url 代码亲测可用 通过正则表达式来进行精确判断

    JAVA验证URL是否有效连接的方法

    - 使用`new URL(url)`创建一个URL对象,然后调用`openConnection()`方法打开到该URL的连接。 - `getResponseCode()`方法获取HTTP响应的状态码,200表示请求成功。 3. **重试机制**: ```java int counts = 0; ...

    Java调用浏览器打开URL地址

    在Java编程中,有时我们需要实现一个功能,即通过程序控制打开本地已安装的浏览器并访问特定的URL地址。这在很多场景下都很有用,比如自动化测试、应用内部的链接跳转或者用户指南等。本篇将详细介绍如何使用Java来...

    URL的又有效性判断

    本文将基于提供的代码示例,深入探讨如何使用Java来检查一个URL是否有效,并确保网络资源能够正常访问。 #### 一、理解URL及其实现 URL(Uniform Resource Locator)统一资源定位符是用于标识互联网上特定资源的...

    Java使用默认浏览器打开指定URL的方法(二种方法)

    方法二: 代码如下://判断当前系统是否支持Java AWT Desktop扩展 if(java.awt.Desktop.isDesktopSupported()){ try{ //创建一个URI实例,注意不是URL java.net.URI uri=java.net.URI.create(“//www.j

    java禁止直接url访问图片

    一种常见的方法是将直接访问图片的URL替换为一个需要经过服务器验证的URL。如果验证通过,服务器可以重定向到实际的图片资源,或者直接由Servlet动态生成带有图片数据的HTTP响应。 6. **使用过滤器(Filter)**: ...

    对比两个uri是否一致,对比两个url是否一致

    对比两个url是否一致,对比两个URL是否一致,包括端口,方法等,非常好用

    基于URL的Java网络编程

    例如,以下代码展示了如何使用`URL`类读取一个网页并将其内容打印出来: ```java try { URL url = new URL("http://www.example.com"); HttpURLConnection connection = (HttpURLConnection) url.open...

    Js检测判断URL网址输入是否正确

    一个标准的URL通常包括以下部分:协议(scheme)、子域名(subdomain)、主域名(domain name)、顶级域名(top-level domain, TLD)、端口号(port)、路径(path)、查询字符串(query string)和锚点(fragment)...

    JAVA 根据Url 接口 获取文件名称和类型

    JAVA 根据Url 接口 获取文件名称和类型,亲测可用。输入参数地址即可。

    正则表达式 Java 判断字串是否合理

    这里的`\w`代表任意字母数字字符或下划线,`([-+.]\\w+)*`表示允许邮箱用户名部分包含连字符、加号、句点等,并且这些符号后还可以跟一个或多个字母数字字符或下划线。`@`后跟域名部分,其中`([-.]\\w+)*`允许域名中...

    判断url链接是否有效

    以下是一些关于如何在Java中判断URL链接是否有效的详细方法: 首先,我们可以使用`java.net.URL`和`java.net.HttpURLConnection`类来实现这个功能。下面是一个简单的示例: ```java import java.net.*; public ...

    java获取网网页中出现的图片及判断网页代码中是否包含有效图片

    1. **使用URL类访问网页**:首先,需要使用`java.net.URL`类创建一个URL对象,该对象表示需要访问的网页地址。 ```java URL url = new URL(httpUrl); ``` 2. **读取网页数据**:接着,使用`URLConnection`类的...

    URL参数拼接类

    URL参数拼接, URL参数拼接, URL参数拼接, URL参数拼接, URL参数拼接

    java urlrewrite jar及简单配置

    Java URLRewrite是一个非常有用的库,它主要用于处理和重写HTTP请求的URL,使得应用程序能够实现更加友好的、可读性强的伪静态地址。在Web开发中,这有助于提高用户体验和SEO(搜索引擎优化)。URLRewrite的核心是...

    java笔试题加答案(单选,多选,判断,简答)

    - **继承**:一个类可以继承另一个类的属性和方法,实现代码重用。 - **多态**:子类对象可以替换父类对象,实现多种形态的处理。 - **抽象类与接口**:理解抽象类(不能实例化,用于被继承)和接口(完全抽象,...

    urlrewrite 3.2.0 java包

    URLRewrite 是一个功能强大的URL重写和转换工具,适用于Java环境。它基于Apache的Tuckey项目,为Web应用程序提供了类似于Apache HTTP服务器的mod_rewrite模块的功能。在3.2.0这个版本中,开发者可以期待更稳定、更...

    用JAVA实现远程图片批量下载

    该方法接收一个URL作为参数,首先创建一个`URLConnection`对象与URL建立连接,然后通过`getContentType`方法判断页面类型是否为文本页面。 - 如果不是文本页面,则将其从`urlWaiting`中移除并添加到`urlProcessed`...

Global site tag (gtag.js) - Google Analytics