`
gary0416
  • 浏览: 335183 次
  • 性别: 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工具类在Java编程中扮演着重要角色,它帮助开发者更方便地处理URL相关的任务,例如构建、解析和操作URL。这个"整理后的url工具类"很可能是为了简化HTTP请求,特别是涉及到文件上传或模拟表单提交的场景。 首先,...

    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

    androd httpurlconnection(工具类) get post t

    在实际开发中,为了代码的复用性和易维护性,通常会将这些网络操作封装成一个工具类,提供如sendGetRequest(), sendPostRequest()和downloadImage()等方法,方便在各个地方调用。 以上就是关于Android中使用...

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

    Java URL转换工具是一种用于解析和处理URL的程序,它能够帮助开发者获取URL背后的真实地址,尤其是在面对重定向、参数编码等情况时。在Web开发中,URL(Uniform Resource Locator)是互联网资源的统一地址,它包含了...

    jaava和jsp工具类

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

    C++工具类-常用工具类源码

    在C++编程中,工具类是非常重要的一部分,它们提供了一系列通用功能,可以帮助开发者更高效地进行项目开发。本文将深入探讨标题"**C++工具类-常用工具类源码**"所涵盖的知识点,主要围绕文件处理、编码处理、字符串...

    java各种实用工具类

    URL工具类 密码加密工具类+AESUtil+凯撒加密-CaesarCipherUtil+频率分析法加密工具,结合凯撒加密-FrequencyCipherUtil时间工具类随机生成工具类文件工具类URL工具类 密码加密工具类+AESUtil+凯撒加密-...

    一些工具类的整合

    本主题主要聚焦于“一些工具类的整合”,包括MD5加密、URL编码与解码以及网络辅助工具等多个方面。这些工具类在日常开发中扮演着不可或缺的角色,尤其对于处理数据安全、网络通信等问题时更为关键。 首先,让我们来...

    android工具类 26个实用工具类

    1. **网络请求工具类**:可能包含一个POST方法,用于向服务器发送HTTP POST请求,通常会封装URL编码、参数设置、请求头管理等功能。例如,`PostUtil`类可以简化网络请求的编写,避免重复的代码。 2. **字符串处理...

    HttpClient接口调用工具类(附带demo)

    这个工具类可能封装了上述四个方法,为开发者提供便利的API,例如`post(String url, Map, String&gt; params)`、`get(String url)`、`put(String url, Map, String&gt; params)`和`delete(String url)`。这样的设计使得在...

    URL编码转码工具

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

    http通用工具类

    2. **URL处理**:工具类应包含解析和构建URL的方法,以便正确处理URL编码和解码,防止URL注入攻击。 3. **请求头设置**:允许设置各种HTTP请求头,如Content-Type(定义请求体的数据类型)、Authorization(用于...

    安卓开发框架工具类相关-Android快速开发系列10个常用工具类.rar

    【标题】"安卓开发框架工具类相关-Android快速开发系列10个常用工具类.rar" 涉及的是Android应用程序开发中的一个关键方面——工具类的集合。在Android开发中,工具类通常包含一系列静态方法,用于执行常见的、重复...

    HttpUtils 发送http请求工具类(实例讲解)

    该工具类提供了多种方法来发送 GET、POST、PUT、DELETE 等请求,并且支持设置超时时间、代理服务器、证书验证等功能。 关键代码分析 在 HttpUtils 工具类中,有一些关键的代码需要特别注意: 1. `init()` 方法:...

    工具类项目,开发经常用到的一些工具类

    8. **网络通信**:网络工具类可能包含URL编码解码、HTTP请求发送等功能,为网络编程提供便利。 9. **异常处理**:提供统一的异常处理方法,如`ExceptionUtils.printStackTrace()`,可以在捕获异常时打印堆栈跟踪,...

    uni-app一些工具类

    2. **网络请求封装**:uni-app提供了uni.request()来处理HTTP请求,但为了简化调用和统一错误处理,开发者往往会在工具类中封装这个方法,比如`apiRequest(url, data, method)`,它可能包含了请求头设置、数据序列化...

    java分页工具类(非常实用)

    * 方法定义:getUrl、setUrl、getType、setType等方法,用于获取和设置分页工具类的属性。 3. 分页工具类的工作流程 分页工具类的工作流程可以分为以下几个步骤: 1. 初始化:分页工具类初始化时,设置了默认的每...

    http请求提交类工具类

    在工具类中,通常会提供两个方法分别处理这两种请求,例如`sendGetRequest(url, params)`和`sendPostRequest(url, params, requestBody)`。 2. 请求头与请求体:HTTP请求由请求行(包含方法、URL和协议版本)、请求...

Global site tag (gtag.js) - Google Analytics