zoukankan      html  css  js  c++  java
  • Java http请求工具类

    该工具类可以调用POST请求或者Get请求,参数以Map的方式传入,支持获获取返回值,返回值接收类型为String

     HttpRequestUtil.java

    package com.util;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.util.List;
    import java.util.Map;

    import net.sf.json.JSONObject;

    /**
    * 用于模拟HTTP请求中GET/POST方式
    *
    * @author https://www.mojxtang.club/
    * @date 2017年8月24日
    */
    public class HttpRequestUtil {
    /**
    * 发送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;
    }

    public static String sendPostTest(String url, JSONObject json) {
    String result = "";// 返回的结果
    BufferedReader in = null;// 读取响应输入流
    PrintWriter out = null;
    String params = "";// 编码之后的参数
    try {
    // 编码请求参数
    params = json.toString();
    // 创建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;
    }
    }

  • 相关阅读:
    揭秘数字行为:快速地多次点击
    MySQL事务在MGR中的漫游记—路线图
    如何成为一名获客专家?
    10分钟快速构建汽车零售看板
    聊一聊整车厂的那些事——售后配件业务
    网易云易盾牵手百视通 助力广电领域新媒体内容安全
    人工智能热门图书(深度学习、TensorFlow)免费送!
    dubbo异步调用原理 (1)
    dubbo事件通知机制 (2)
    dubbo事件通知机制(1)
  • 原文地址:https://www.cnblogs.com/niudaxianren/p/9988031.html
Copyright © 2011-2022 走看看