客戶端 網絡請求封裝類 --- HttpManger

客戶端進行網絡請求,也是常用的一個工具類,所以封裝起來用到的時候就可以使用了

package utils;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class HttpManager {

    /**
     * 用POST請求返回消息的方法
     * @param action 地址路徑
     * @param par  參數鍵值對
     * @return
     */
    public static String doPost(String action, Map<String, String> par) {
        String responStr = null;
        try {
            // 1、網址
            URL url = new URL(action);
            // 2、打開鏈接獲取數據
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            // 設置請求方式爲POST
            con.setRequestMethod("POST");
            // 設置可以輸入輸出
            con.setDoInput(true);
            con.setDoOutput(true);
            // 設置不使用緩存
            con.setUseCaches(false);
            if (null != par) {
                // 將參數寫到內容中
                DataOutputStream out = new DataOutputStream(
                        con.getOutputStream());
                // 組裝參數(對中文參數要進行)
                StringBuffer sb = new StringBuffer();
                Iterator<Entry<String, String>> it = par.entrySet().iterator();
                while (it.hasNext()) {
                    Entry<String, String> en = it.next();
                    sb.append(en.getKey()).append("=")
                            .append(URLEncoder.encode(en.getValue(), "gbk"))
                            .append("&");
                } // name=abc&psw=123&sex=n&
                int len = sb.length();
                // 刪除最後一個&符號
                sb.delete(len - 1, len); // name=abc&psw=123&sex=n
                // 將參數寫到請求內容中,提交到服務端
                out.writeBytes(sb.toString());
                out.flush();
            }
            // 獲取服務端返回的數據
            con.connect(); // 再次確認連接
            if (con.getResponseCode() == 200) {
                BufferedReader br = new BufferedReader(new InputStreamReader(
                        con.getInputStream()));
                // 如果返回的內容很多,那麼可以全部拼接起來再處理
                StringBuffer result = new StringBuffer();
                String str;
                while ((str = br.readLine()) != null) {
                    result.append(str);
                }
                responStr = result.toString();
                br.close();
            }
            // 3、關閉鏈接
            con.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return responStr;
    }

    /**
     * 用GEt請求返回的消息的方法
     * @param path  地址路徑
     */
    public static String doGet(String path){
        StringBuffer result=new StringBuffer();
        try {
            //新建網址
            URL url=new URL(path);
            //打開鏈接
            HttpURLConnection con=(HttpURLConnection)url.openConnection();
            //配置打開方法
            con.setRequestMethod("GET");
            //判斷返回信息
            if(con.getResponseCode()==200){
                //處理服務器傳來的信息
                BufferedReader br=new BufferedReader(new InputStreamReader(con.getInputStream()));
                String str;
                while((str=br.readLine())!=null){
                    result.append(str);
                }

                br.close();
            }
            //關閉鏈接
            con.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result.toString();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章