HttpTools.java 3.89 KB
package com.xkl.tools;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.*;

/**
 * Created by win7 on 2016/12/25.
 */
public class HttpTools {

    /**
     * 获取当前时间,10位
     *
     * @return
     */
    public static String getNow() {
        Calendar c = Calendar.getInstance();//可以对每个时间域单独修改
        return String.valueOf(c.getTimeInMillis() / 1000);
    }


    /**
     * 发送http请求
     *
     * @param url    请求url
     * @param type   请求类型:GET,POST,DELETE
     * @param params 请求参数:map类型
     * @return
     */
    public static String requestByMapWithToken(String url, String type, Map<String, String> params, String authorization) {
        String reqbody = getRequestData(params, "UTF-8").toString();
        String result = requestByString(url + "?" + reqbody, type, authorization, null);
        return result;
    }

    public static String requestByMap(String url, String type, Map<String, String> params) {
        return requestByMapWithToken(url, type, params, "");
    }

    /**
     * 发送http请求
     *
     * @param url     请求url
     * @param type    请求类型:GET,POST,DELETE
     * @param reqbody 请求参数:String类型
     * @return
     */
    public static String requestByString(String url, String type, String authorization, String reqbody) {
        HttpURLConnection con = null;
        String result = null;
        try {
            con = getHttpConnection(url, type, authorization);
            //you can add any request body here if you want to post
            if (reqbody != null) {
                DataOutputStream out = new DataOutputStream(con.getOutputStream());
                out.writeBytes(reqbody);
                out.flush();
                out.close();
            }
            con.connect();
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String temp = null;
            StringBuilder sb = new StringBuilder();
            while ((temp = in.readLine()) != null) {
                sb.append(temp).append(" ");
            }
            result = sb.toString();
            in.close();
        } catch (IOException e) {
            System.out.println(e);
        }
        return result;

    }

    private static HttpURLConnection getHttpConnection(String url, String type, String authorization) {
        URL uri = null;
        HttpURLConnection con = null;
        try {
            uri = new URL(url);
            con = (HttpURLConnection) uri.openConnection();
            con.setRequestMethod(type); //type: POST, PUT, DELETE, GET
            if (type.equals("POST"))
                con.setDoOutput(true);
            con.setConnectTimeout(2000); //2 secs
            con.setReadTimeout(2000); //2 secs
            con.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
            con.setRequestProperty("authorization", authorization);
        } catch (Exception e) {
            System.out.println("connection i/o failed");
        }


        return con;
    }

    private static StringBuffer getRequestData(Map<String, String> params, String encode) {
        StringBuffer stringBuffer = new StringBuffer();        //存储封装好的请求体信息
        try {
            for (Map.Entry<String, String> entry : params.entrySet()) {
                stringBuffer.append(entry.getKey())
                        .append("=")
                        .append(URLEncoder.encode(entry.getValue(), encode))
                        .append("&");
            }
            stringBuffer.deleteCharAt(stringBuffer.length() - 1);    //删除最后的一个"&"
        } catch (Exception e) {
            e.printStackTrace();
        }
        return stringBuffer;
    }

}