java Http请求

zkwgpp 2020-05-11

1. 发送get请求

/**
     * 发送GET请求
     *
     * @param urlStr        目的地址
     * @param params 请求参数,Map类型。
     * @return 远程响应结果
     */
    public String sendGet(String urlStr, Map<String, String> params) throws Exception {
        //拼接urlStr
        StringBuffer sb = new StringBuffer();
        for(Entry<String, String> entry : params.entrySet()) {
            sb.append("&").append(entry.getKey()).append("=").append(entry.getValue());
        }
        sb.replace(0, 1, "?");
        sb.insert(0, urlStr);
        //创建url对象
        URL url = new URL(sb.toString());
        //创建连接对象,我们要使用http连接 所以强转为Http连接对象
        HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
        //连接对象设置通用参数
        httpConnection.setRequestProperty("Accept", "*/*");
        httpConnection.setRequestProperty("Connection", "Keep-Alive");
        httpConnection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
        //建立连接
        httpConnection.connect();
        // 获取响应头信息
        Map<String, List<String>> headers = httpConnection.getHeaderFields();
        //获取响应内容
        BufferedReader reader = new BufferedReader(new InputStreamReader(httpConnection.getInputStream(), "UTF-8"));
        sb = new StringBuffer();
        String line = null;
        while((line = reader.readLine()) != null) {
            sb.append(line);
        }
        
        return sb.toString();
    }

2. 发送post请求

/**
     * 发送POST请求
     *
     * @param urlStr        目的地址
     * @param params 请求参数,Map类型。
     * @return 远程响应结果
     */
    public String sendPost(String urlStr, Map<String, String> params) throws Exception {
        StringBuffer sb = new StringBuffer();
        for(Entry<String, String> entry : params.entrySet()) {
            sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
        }
        sb.substring(sb.length() - 1, sb.length());
        System.out.println(sb.toString());

        //创建url对象
        URL url = new URL(urlStr);
        //创建连接对象,我们要使用http连接 所以强转为Http连接对象
        HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
        //连接对象设置通用参数
        httpConnection.setRequestProperty("Accept", "*/*");
        httpConnection.setRequestProperty("Connection", "Keep-Alive");
        httpConnection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
        // 设置POST方式
        httpConnection.setDoInput(true);
        httpConnection.setDoOutput(true);
        // 获取HttpURLConnection对象对应的输出流
        PrintWriter out = new PrintWriter(httpConnection.getOutputStream());
        // 发送请求参数
        out.write(sb.toString());
        // flush输出流的缓冲
        out.flush();
        
        //获取响应内容
        BufferedReader reader = new BufferedReader(new InputStreamReader(httpConnection.getInputStream(), "UTF-8"));
        sb = new StringBuffer();
        String line = null;
        while((line = reader.readLine()) != null) {
            sb.append(line);
        }
        return sb.toString();
    }

相关推荐