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

本文介绍了一个用于封装HTTP客户端请求的工具类,包括GET和POST请求的实现。通过该工具类,开发者可以方便地发送网络请求并接收响应。
客户端进行网络请求,也是常用的一个工具类,所以封装起来用到的时候就可以使用了
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();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值