1、URL编解码

public static String getURLEncoderString(String str) {
        String result = "";
        if (null == str) {
            return "";
        }
        try {
            result = java.net.URLEncoder.encode(str, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return result;
    }

    public static String URLDecoderString(String str) {
        String result = "";
        if (null == str) {
            return "";
        }
        try {
            result = java.net.URLDecoder.decode(str, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return result;
    }

注意:java.net的url编码方法在对一些特殊符号编码时有个bug,如:+号decord时,+号会变成空格,需要把+号替换成%2B,str=str.replaceAll("\\+", "%2B");

2、发送HTTP请求

// 1、实例化一个IP地址,InetAddress经常和UDP DatagramSockets 和 Socket ServerSocket 类一起使用
InetAddress address = InetAddress.getByName("http://www.baidu.com");
		
// 2、URL和URLConnection
URL url = new URL("http://www.baidu.com");
URLConnection urlConnection = url.openConnection();
//true表示发送post请求
urlConnection.setDoOutput(true);
//获取输入输出流
InputStream input = urlConnection.getInputStream();
OutputStream output = urlConnection.getOutputStream();

发送请求:

URL url = new URL("your http url");
URLConnection conn = url.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
PrintWriter out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print("name=zhangsan&age=10");
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
String result = "";
while ((line = in.readLine()) != null) {
	result += line;
}
System.out.println(result);