zoukankan      html  css  js  c++  java
  • (Java) 模拟http请求调用远程接口

    package com.vcgeek.hephaestus.utils;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * 功能描述
     *
     * @author: zyu
     * @description:
     * @date: 2019/3/22 11:10
     */
    public class HttpClientUtil {
    
        /**
         * 发送GET请求
         *
         * @param url        目的地址
         * @param parameters 请求参数,Map类型。
         * @return 远程响应结果
         */
        public static String sendGet(String url, Map<String, String> parameters) {
            String result = "";
            BufferedReader in = null;// 读取响应输入流
            StringBuffer sb = new StringBuffer();// 存储参数
            String params = "";// 编码之后的参数
            try {
                // 编码请求参数
                if (parameters.size() == 1) {
                    for (String name : parameters.keySet()) {
                        sb.append(name).append("=").append(
                                java.net.URLEncoder.encode(parameters.get(name),
                                        "UTF-8"));
                    }
                    params = sb.toString();
                } else {
                    for (String name : parameters.keySet()) {
                        sb.append(name).append("=").append(
                                java.net.URLEncoder.encode(parameters.get(name),
                                        "UTF-8")).append("&");
                    }
                    String temp_params = sb.toString();
                    params = temp_params.substring(0, temp_params.length() - 1);
                }
                String full_url = url + "?" + params;
                System.out.println(full_url);
                // 创建URL对象
                java.net.URL connURL = new java.net.URL(full_url);
                // 打开URL连接
                java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL
                        .openConnection();
                // 设置通用属性
                httpConn.setRequestProperty("Accept", "*/*");
                httpConn.setRequestProperty("Connection", "Keep-Alive");
                httpConn.setRequestProperty("User-Agent",
                        "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
                // 建立实际的连接
                httpConn.connect();
                // 响应头部获取
                Map<String, List<String>> headers = httpConn.getHeaderFields();
                // 遍历所有的响应头字段
                for (String key : headers.keySet()) {
                    System.out.println(key + "	:	" + headers.get(key));
                }
                // 定义BufferedReader输入流来读取URL的响应,并设置编码方式
                in = new BufferedReader(new InputStreamReader(httpConn
                        .getInputStream(), "UTF-8"));
                String line;
                // 读取返回的内容
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
            return result;
        }
    
        /**
         * 发送POST请求
         *
         * @param url        目的地址
         * @param parameters 请求参数,Map类型。
         * @return 远程响应结果
         */
        public static String sendPost(String url, Map<String, String> parameters) {
            String result = "";// 返回的结果
            BufferedReader in = null;// 读取响应输入流
            PrintWriter out = null;
            StringBuffer sb = new StringBuffer();// 处理请求参数
            String params = "";// 编码之后的参数
            try {
                // 编码请求参数
                if (parameters.size() == 1) {
                    for (String name : parameters.keySet()) {
                        sb.append(name).append("=").append(
                                java.net.URLEncoder.encode(parameters.get(name),
                                        "UTF-8"));
                    }
                    params = sb.toString();
                } else {
                    for (String name : parameters.keySet()) {
                        sb.append(name).append("=").append(
                                java.net.URLEncoder.encode(parameters.get(name),
                                        "UTF-8")).append("&");
                    }
                    String temp_params = sb.toString();
                    params = temp_params.substring(0, temp_params.length() - 1);
                }
                // 创建URL对象
                java.net.URL connURL = new java.net.URL(url);
                // 打开URL连接
                java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL
                        .openConnection();
                // 设置通用属性
                httpConn.setRequestProperty("Accept", "*/*");
                httpConn.setRequestProperty("Connection", "Keep-Alive");
                httpConn.setRequestProperty("User-Agent",
                        "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
                // 设置POST方式
                httpConn.setDoInput(true);
                httpConn.setDoOutput(true);
                // 获取HttpURLConnection对象对应的输出流
                out = new PrintWriter(httpConn.getOutputStream());
                // 发送请求参数
                out.write(params);
                // flush输出流的缓冲
                out.flush();
                // 定义BufferedReader输入流来读取URL的响应,设置编码方式
                in = new BufferedReader(new InputStreamReader(httpConn
                        .getInputStream(), "UTF-8"));
                String line;
                // 读取返回的内容
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (out != null) {
                        out.close();
                    }
                    if (in != null) {
                        in.close();
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
            return result;
        }
    
    }
  • 相关阅读:
    TestNG
    K近邻算法
    Python解决乱码问题
    Log4J 配置
    多线程死锁
    hadooplzo安装出错的解决方法
    B树
    设计模式
    整数序列化
    Maven
  • 原文地址:https://www.cnblogs.com/zyulike/p/10579116.html
Copyright © 2011-2022 走看看