1. 程式人生 > >雲從科技人臉識別傳送http請求工具類

雲從科技人臉識別傳送http請求工具類

    下面程式碼為本人專案實際應用程式碼工具類:


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

/**
 * 
 * 
 */
public class HttpUtils {

	
	private static String CHARSET="UTF-8"; //字符集


	
	/***
	 *    生成提交引數
	 * @param paraMap
	 * @return
	 */
	private static String buildParam(Map paraMap)
	{
		if(null==paraMap||paraMap.size()==0)
		{
			return "";
		}
		try
		{
			StringBuffer buildStr=new StringBuffer();
			for(Object obj:paraMap.keySet())
			{
				buildStr.append(obj.toString()+"="+URLEncoder.encode(paraMap.get(obj.toString()).toString(),CHARSET));// 採用encode方式避免入參中文亂碼
				buildStr.append("&");
			}
			String temp=buildStr.toString();
			return temp.substring(0,temp.length()-1);
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
			return "encode-error"; //表示UTF編碼失敗
		}
	}

	/**
	 * 
	 * 簡化post入參操作
	 * @param url
	 * @param paraMap
	 * @return
	 * @throws Exception
	 */
	public static String postUrl(String url,Map paraMap)throws Exception
	{
			return postUrl(url,paraMap,"");
	
	}
	/**提交url引數
	 * dmq 20140710
	 * @param url
	 * @param mapMap
	 * @param session
	 * @return
	 */
	public static String postUrl(String url,Map paraMap,String session)throws Exception
	{
		URL reqUrl=new URL(url);
		HttpURLConnection conn = (HttpURLConnection)reqUrl.openConnection();
		conn.setDoOutput(true); //因為是post請求,引數要放在http正文內,為true則表示引數放正文內
		conn.setDoInput(true);//設定是否通conn讀入,預設情況是true
		conn.setUseCaches(false);//Post不能使用快取
		conn.setRequestMethod("POST");//post方法
		//conn.setRequestProperty("charset", CHARSET);
		conn.addRequestProperty("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		//設定超時時間
		conn.setConnectTimeout(50000);
		conn.setReadTimeout(50000);

      //將請求引數提交
        OutputStream output = conn.getOutputStream();
        String content=buildParam(paraMap);
        //dmq 20150119 如果編碼失敗,則直接丟擲異常
        if("encode-error".equals(content))
        {
        	conn.disconnect();
        	throw new Exception("[dgzq]入參編碼失敗");
        }

        output.write(content.getBytes());
        output.flush();
        output.close();
        // 獲取頁面返回內容
        //注意,實際傳送請求的程式碼段在getInputStream()中,並且本次請求已經結束
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn
                .getInputStream(),CHARSET));

        StringBuffer repMsg=new StringBuffer("");;
        try
        {
	        String line="";
	        while ((line = reader.readLine()) != null) {
	        	repMsg.append(line);
	        }
        }
        finally
        {
        	reader.close();
        }

       return repMsg.toString();

	}


}