`
gary0416
  • 浏览: 330404 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

URL工具类

阅读更多
package ssh.util;

import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;

/**
 * URL工具
 * @author gary
 *
 */
public class URLUtil {

	/**
	 * 对url进行编码
	 */
	public static String encodeURL(String url) {
		try {
			return URLEncoder.encode(url, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	/**
	 * 对url进行解码
	 * @param url
	 * @return
	 */
	public static String decodeURL(String url){
		try {
			return URLDecoder.decode(url, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 判断URL地址是否存在
	 * @param url
	 * @return
	 */
	public static boolean isURLExist(String url) {
		try {
			URL u = new URL(url);
			HttpURLConnection urlconn = (HttpURLConnection) u.openConnection();
			int state = urlconn.getResponseCode();
			if (state == 200) {
				return true;
			} else {
				return false;
			}
		} catch (Exception e) {
			return false;
		}
	}
	
	/**
	 * 将请求参数还原为key=value的形式,for struts2
	 * @param params
	 * @return
	 */
	public static String getParamString(Map<?, ?> params) {
		StringBuffer queryString = new StringBuffer(256);
		Iterator<?> it = params.keySet().iterator();
		int count = 0;
		while (it.hasNext()) {
			String key = (String) it.next();
			String[] param = (String[]) params.get(key);
			for (int i = 0; i < param.length; i++) {
				if (count == 0) {
					count++;
				} else {
					queryString.append("&");
				}
				queryString.append(key);
				queryString.append("=");
				try {
					queryString.append(URLEncoder.encode((String) param[i], "UTF-8"));
				} catch (UnsupportedEncodingException e) {
				}
			}
		}
		return queryString.toString();
	}

	/**
	 * 获得请求的路径及参数
	 * @param request
	 * @return
	 */
	public static String getRequestURL(HttpServletRequest request) {
		StringBuffer originalURL = new StringBuffer(request.getServletPath());
		Map<?,?> parameters = request.getParameterMap();
		if (parameters != null && parameters.size() > 0) {
			originalURL.append("?");
			originalURL.append(getParamString(parameters));
		}
		return originalURL.toString();
	}

	/**
	 * 抓取网页内容,自动识别编码
	 * @param urlString
	 * @return
	 */
	public static String url2Str(String urlString) {
		try {
			StringBuffer html = new StringBuffer();
			URL url = new URL(urlString);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			URLConnection c = url.openConnection();
			c.connect();
			String contentType = c.getContentType();
			String characterEncoding = null;
			int index = contentType.indexOf("charset=");
			if(index == -1){
				characterEncoding = "UTF-8";
			}else{
				characterEncoding = contentType.substring(index + 8, contentType.length());
			}
	        InputStreamReader isr = new InputStreamReader(conn.getInputStream(), characterEncoding);
	        BufferedReader br = new BufferedReader(isr);
	        String temp;
	        while ((temp = br.readLine()) != null) {
	            html.append(temp).append("\n");
	        }
	        br.close();
	        isr.close();
	        return html.toString();
	     } catch (Exception e) {
	        e.printStackTrace();
	        return null;
	     }
	 }
	
	/**
	 * 保存图片到本地 
	 * @param picUrl
	 * 		图片URL地址
	 * @param newFileName
	 * 		保存文件名
	 * @param dir
	 * 		保存目录
	 * @return
	 */
	public static void savePic(String picUrl, String newFileName, String dir){
		try{
			URL url = new URL(picUrl);
			InputStream in = url.openStream();   
			BufferedImage srcImage =  ImageIO.read(url.openStream());
	 
			File img = new File(dir + newFileName);
			
			ImageIO.write(srcImage, "jpg", img);
	        in.close();
    	} catch (IOException e) {   
    		e.printStackTrace();   
    	}
	}
    public static void main(String[] args) {
    	String content = URLUtil.url2Str("http://www.baidu.com");;
    	System.out.println(content);
    }
}
分享到:
评论
7 楼 liang30890136 2011-05-13  
why213344 写道
xbgd 写道
int state = urlconn.getResponseCode();  
       if (state == 200) {  

使用返回发为200来判断是否存在不正确吧。

我记得2**都是可能的



/**
     * Gets the status code from an HTTP response message.
     * For example, in the case of the following status lines:
     * <PRE>
     * HTTP/1.0 200 OK
     * HTTP/1.0 401 Unauthorized
     * </PRE>
     * It will return 200 and 401 respectively.
     * Returns -1 if no code can be discerned
     * from the response (i.e., the response is not valid HTTP).
     * @throws IOException if an error occurred connecting to the server.
     * @return the HTTP Status-Code, or -1
     */
    public int getResponseCode() throws IOException

200 成功
201 已创建
202 已接受
203 非权威性信息
204 无内容
205 重置内容
206 部分内容



唉,500错误(内部错误)都应该是存在的,我看到也觉得有问题呢。

sorry,sorry,感谢楼主先,我已经收藏起来了,O(∩_∩)O哈哈~
6 楼 why213344 2011-05-13  
xbgd 写道
int state = urlconn.getResponseCode();  
       if (state == 200) {  

使用返回发为200来判断是否存在不正确吧。

我记得2**都是可能的



/**
     * Gets the status code from an HTTP response message.
     * For example, in the case of the following status lines:
     * <PRE>
     * HTTP/1.0 200 OK
     * HTTP/1.0 401 Unauthorized
     * </PRE>
     * It will return 200 and 401 respectively.
     * Returns -1 if no code can be discerned
     * from the response (i.e., the response is not valid HTTP).
     * @throws IOException if an error occurred connecting to the server.
     * @return the HTTP Status-Code, or -1
     */
    public int getResponseCode() throws IOException

200 成功
201 已创建
202 已接受
203 非权威性信息
204 无内容
205 重置内容
206 部分内容
5 楼 xbgd 2011-05-13  
int state = urlconn.getResponseCode();  
       if (state == 200) {  

使用返回发为200来判断是否存在不正确吧。

我记得2**都是可能的
4 楼 bingki 2011-05-13  
收了,以后可能用的着
3 楼 jonesche 2011-05-13  
竟然 上首页了
2 楼 zhao0p 2011-05-13  
还有点用,收了!
1 楼 myter7 2011-05-12  
差点就把你当成个帮组文档了 ^ ^

相关推荐

    整理后的url工具类

    整理后的url工具类,可传入文件,模拟form提交

    javaweb项目常用工具包

    Base64工具类-字符编码工具类-数据类型转换-日期工具类-Escape中文...MD5编码工具类- MD5加密 生成32位md5码-数字工具类-随机数工具类-反射工具类-字符串处理工具类-URL工具类-UUID-常用的数据验证工具类-XML工具类-

    java常用工具类

    文件工具类,Http请求工具类,图片处理工具类。Ip工具类。mail工具类,Map工具类,MD5编码工具类,数字工具类,随机数工具类,反射工具类,字符串处理工具类,URL工具类,XML工具类,常用的数据验证工具类

    java加密工具类 md5 aes base64 urlencode

    加密工具类 包含md5加密 base加密解密 md5加密 aes加密解密 urlencoude

    jaava和jsp工具类

    [工具类] 成各种密码随机串,加密解密,编码解码,执行url.java [工具类] 读取、打印输出、保存xml .java [工具类] 获得汉字拼音首字母的java工具类 .java [工具类] 获取绝对路径 .java [工具类] 记录log日志...

    androd httpurlconnection(工具类) get post t

    这是一个关于httpurlconnection 的网络post get 图片下载的Demo

    java 版Url转换工具,可得到真实的URL

    java 版Url转换工具,可得到真实的URL

    URL编码转码工具

    2. 这曾经是入侵大型网站(特别是交易类网站的)的黑客钓鱼时隐藏实际URL的工具. 在09年之前的很流行的搜索框漏洞就可以利用框架制造出官方域名开头的URL,然后用转码工具 去隐藏实际的request参数.

    java url转图片工具类jar包集、pom.xml maven文件

    DJNativeSwing.jar,DJNativeSwing-SWT.jar,swt-win-x64.jar(另提供swt-windows.jar32位下载) 自带pom.xml maven文件---亲测都可使用

    一些工具类的整合

    工具类的整合,md5加密,url编码,解码,网络辅助工具等等

    jsoup Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容

    jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

    hutool 工具类

    编码工具-URL工具 编码工具-Base32-64工具 编码工具-Unicode工具 常用类辅助工具-转换工具 常用类辅助工具-日期工具 常用类辅助工具-字符串工具 常用类辅助工具-数字工具 常用类辅助工具-数组工具 常用类...

    java网络请求工具类 HttpURLConnection

    java网络请求工具类 HttpURLConnection post请求工具类HttpURLConnection httpURLConnection = (HttpURLConnection) url .openConnection(); httpURLConnection.setRequestMethod("POST");// 提交模式

    CreateFileUtil 创建文件工具类

    创建文件工具类 包含创建文件夹 文件 临时文件等

    URL参数拼接类

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

    常用验证工具类

    常用验证工具类,包括邮箱,手机,座机号,非零,数字,大小写,中文,条形码,IP,URL地址,html正则表达式验证等

    URL截取工具

    自己做的一个URL截取小工具,主要功能有: 1、截取URL完整域名 2、截取URL一、二、三级目录

    C# webservice 服务调用工具类,源码

    C# webservice 服务调用工具类。 此工具 对 post get 请求进行了封装,只需要传递对应的URL以及参数即可返回JSON 或者XML 的字符串。 是非常有用的调用远程接口的服务类。 webservice

    微信服务好xml数据包加密解密工具类

    微信服务好xml数据包加密解密工具类,来源于官方文档,下载完就能使用。 使用方式: 1.解压压缩包 2.将demo代码拷贝至编辑器中 3.打开Program类,通过maven自动将所有的依赖引入 4.根据自己的实际情况,修改toekn,...

    android缓存工具类源码

    android 缓存 工具类 源码,为用户节省流量,把信息存放到数据库,三种缓存策略:(1)LRU算法,固定缓存图片数量(max_num),当图片数量超出max_num时,将缓存中最近用的最少的图片删除。 (2)FTU算法,固定每张...

Global site tag (gtag.js) - Google Analytics