模拟浏览器请求get、post

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Map;

/**

  • Created by wcy on 2019/7/12.
    */
    public class IntfUtil {

    /**

    • 调用接口方

    • @param url 对方或第三方提供的路径

    • @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析
      */
      public static String interfaceUtilForyw(String data,String url) {
      HttpPost post = new HttpPost(url);
      String result = “”;
      try {
      post.setHeader(“Content-Type”, “application/json”);
      StringEntity entity = new StringEntity(data, “UTF-8”); // 中文乱码在此解决
      entity.setContentType(“application/json”);
      post.setEntity(entity);
      HttpResponse res = HttpClients.createDefault().execute(post);
      if (res.getStatusLine().getStatusCode() == 200) {
      result = EntityUtils.toString(res.getEntity());// 返回json格式:
      }

      } catch (Exception e) {
      e.printStackTrace();
      }
      return result.toString();
      }

      /**

      • 接口调用 GET
        */
        public static String httpURLConectionGET( String GET_URL) {
        StringBuilder sb = new StringBuilder();
        try {
        URL url = new URL(GET_URL); // 把字符串转换为URL请求地址
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打开连接
        connection.connect();// 连接会话
        // 获取输入流
        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line;

         while ((line = br.readLine()) != null) {// 循环读取流
             sb.append(line);
         }
         br.close();// 关闭流
         connection.disconnect();// 断开连接
         System.out.println(sb.toString());
        

        } catch (Exception e) {
        e.printStackTrace();
        System.out.println(“失败!”);
        }
        return sb.toString();
        }

      /**

      • 接口调用 POST
        */
        public static String sendPost(String url, Map parameters) {

        System.out.println(“请求地址—”+url);

        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("Charset", "UTF-8");
         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;
        }

}

你可能感兴趣的:(java)