客户端 网络请求封装类 --- HttpManger

来源:互联网 发布:免费路由软件 编辑:程序博客网 时间:2024/05/17 08:06

客户端进行网络请求,也是常用的一个工具类,所以封装起来用到的时候就可以使用了

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();    }}