首页 > 编程 > Java > 正文

java模拟http请求调用远程接口工具类

2019-11-09 16:05:11
字体:
来源:转载
供稿:网友

转载自http://www.cnblogs.com/vitre/p/5474166.html

package mm.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;

/** * 用于模拟HTTP请求中GET/POST方式  * @author landa * */public class HttpUtils {      /**      * 发送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 + "/t:/t" + 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;      }        /**      * 主函数,测试请求      *       * @param args      */      public static void main(String[] args) {          Map<String, String> parameters = new HashMap<String, String>();          parameters.put("userId", "1806001100005");          String result =sendGet("http://192.168.0.200:8085/site-admin-v2.6/site/accuntState", parameters);        System.out.println(result);     }  } 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表