ConnectUtil.java 4.04 KB
Newer Older
xucl committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
package com.fadu.jeefw.web.oss;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import java.util.Random;

public class ConnectUtil {
	private static Log log = LogFactory.getLog(ConnectUtil.class);
	
	private static GsonBuilder gb = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").serializeNulls();
	
	public static Gson createGson() {
		return gb.create();
	}

	/**
	 * 生成随即密码
	 * 
	 * @param pwd_len
	 *            生成的密码的总长度
	 * @return 密码的字符串
	 */
	public static String genRandomNum(int pwd_len) {
		final int maxNum = 36;
		int i; // 生成的随机数
		int count = 0; // 生成的密码的长度
		char[] str = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
				'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
				'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
		StringBuffer pwd = new StringBuffer("");
		Random r = new Random();
		while (count < pwd_len) {
			// 生成随机数,取绝对值,防止 生成负数,

			i = Math.abs(r.nextInt(maxNum)); // 生成的数最大为36-1

			if (i >= 0 && i < str.length) {
				pwd.append(str[i]);
				count++;
			}
		}
		return pwd.toString();
	}

	@SuppressWarnings({"rawtypes" })
	public static <T> T connectURL(String url, Class clazz) {
		return connectURL(url,null,clazz,5000);
	}
	
	@SuppressWarnings({"rawtypes" })
	public static <T> T connectURL(String url, Object brb, Class clazz) {
		return connectURL(url,brb,clazz,5000);
	}
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static <T> T connectURL(String url, Object brb, Class clazz, int timeout ) {
		Gson gson = createGson();
		String json =null;
		if(brb!=null)
			json = gson.toJson(brb);
		String result = connectURL(url, json, timeout);
		T res = (T) gson.fromJson(result, clazz);
		return res;
	}
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static <T> T connectURL(String url, Map<String,String> map, Class clazz) {
		Gson gson = createGson();
		StringBuffer params = new StringBuffer();
		int i = 0;
		if(map!=null){
			for(String key:map.keySet()){
				if(i==0)
					params.append(key).append("=").append(map.get(key));
				else
					params.append("&").append(key).append("=").append(map.get(key));
				i++;
			}
		}
		String send = params.toString();
		String result = connectURL(url, send, 5000);
		T res = (T) gson.fromJson(result, clazz);
		return res;
	}
	
	public static String connectURL(String dest_url) {
		return connectURL(dest_url, null, 5000);
	}
	
	public static String connectURL(String dest_url, String content, int timeout) {
		
		String rec_string = "";
		URL url = null;
		HttpURLConnection urlconn = null;
		OutputStream out = null;
		BufferedReader rd = null;
		try {
			url = new URL(dest_url);
			urlconn = (HttpURLConnection) url.openConnection();
			if(timeout>1000)
				urlconn.setReadTimeout(timeout);
			else
				urlconn.setReadTimeout(5000);
			// urlconn.setRequestProperty("content-type", "text/html;charset=UTF-8");
			urlconn.setRequestMethod("POST");
			
			urlconn.setDoInput(true);
			urlconn.setDoOutput(true);
			out = urlconn.getOutputStream();
			if(content!=null){
				out.write(content.getBytes("UTF-8"));
			}
			out.flush();
			out.close();
			rd = new BufferedReader(new InputStreamReader(urlconn.getInputStream(),"UTF-8"));
			StringBuffer sb = new StringBuffer();
			int ch;
			while ((ch = rd.read()) > -1)
				sb.append((char) ch);
			rec_string = sb.toString();

		} catch (Exception e) {
			log.error(e, e);
			//e.printStackTrace();
		} finally {
			try {
				if (rd != null) {
					rd.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			try {
				if (urlconn != null) {
					urlconn.disconnect();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		return rec_string;
	}

	
	public static void main(String[] args) {
		
	}

}