- package ssh.util;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.io.UnsupportedEncodingException;
- import java.net.HttpURLConnection;
- 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.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;
- }
- }
- public static void main(String[] args) {
- String content = URLUtil.url2Str("http://www.baidu.com");;
- System.out.println(content);
- }