博客
关于我
简易版Http请求工具
阅读量:374 次
发布时间:2019-03-05

本文共 6879 字,大约阅读时间需要 22 分钟。

简易版Http请求工具

简易版Http请求工具

这里的联网应用程序使用java.net包下的URL/HttpURLConnection类实现get/post请求

1、创建一个RUL对象

URL url = new URL(reqUrl);

2、获取URLConnection实例,与URL引用的远程对象的连接。

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

3、HttpURLConnection打开指向此引用的资源的通信链接

conn.connect();

4、从此打开的连接读取的输入流。

conn.getInputStream()

5、处理输入流
根据业务处理输入流

GET请求

关键代码

public static String doGet(URL url, String encoding) throws IOException {       BufferedReader reader = null;    HttpURLConnection conn = null;    try {           conn = (HttpURLConnection)url.openConnection();        setConnectionParameter("GET", conn);        setHeader(encoding, conn);        conn.connect();        reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));        return getResult(reader);    } catch (IOException e) {           e.printStackTrace();        throw new RuntimeException(e);    } finally {           if (reader != null){               reader.close();        }        if (conn != null){               conn.disconnect();        }    }}

POST请求

关键代码

public static String doPost(URL url, Map<String, String> params, String encoding) throws IOException {       DataOutputStream out = null;    BufferedReader reader = null;    HttpURLConnection conn = null;    try {           conn = (HttpURLConnection)url.openConnection();        setConnectionParameter("POST", conn);        setHeader(encoding, conn);        conn.connect();        if ((null != params) && (!params.isEmpty())) {               out = new DataOutputStream(conn.getOutputStream());            String stringParams = buildParams(params);            out.write(stringParams.getBytes());            out.flush();        }        reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));        return getResult(reader);    } catch (Exception e) {           throw new RuntimeException(e);    } finally {           if (reader != null){               reader.close();        }        if (out != null){               out.close();        }        if (conn != null){               conn.disconnect();        }    }}

完整代码

import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.HashMap;import java.util.Map;public class HttpUtils {       private static final String CHARSET = "UTF-8";    public static String doGet(String reqUrl) throws IOException {           return doGet(reqUrl, CHARSET);    }    public static String doGet(String reqUrl, String encoding) throws IOException {           URL url = new URL(reqUrl);        return doGet(url, encoding);    }    public static String doGet(URL url, String encoding) throws IOException {           BufferedReader reader = null;        HttpURLConnection conn = null;        try {               conn = (HttpURLConnection)url.openConnection();            setConnectionParameter("GET", conn);            setHeader(encoding, conn);            conn.connect();            reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));            return getResult(reader);        } catch (IOException e) {               e.printStackTrace();            throw new RuntimeException(e);        } finally {               if (reader != null){                   reader.close();            }            if (conn != null){                   conn.disconnect();            }        }    }    public static String doPost(String reqUrl, Map<String, String> params) throws IOException {           return doPost(reqUrl, params, CHARSET);    }    public static String doPost(String reqUrl, Map<String, String> params, String encoding) throws IOException {           URL url = new URL(reqUrl);        return doPost(url, params, encoding);    }    public static String doPost(URL url, Map<String, String> params, String encoding) throws IOException {           DataOutputStream out = null;        BufferedReader reader = null;        HttpURLConnection conn = null;        try {               conn = (HttpURLConnection)url.openConnection();            setConnectionParameter("POST", conn);            setHeader(encoding, conn);            conn.connect();            if ((null != params) && (!params.isEmpty())) {                   out = new DataOutputStream(conn.getOutputStream());                String stringParams = buildParams(params);                out.write(stringParams.getBytes());                out.flush();            }            reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));            return getResult(reader);        } catch (Exception e) {               throw new RuntimeException(e);        } finally {               if (reader != null){                   reader.close();            }            if (out != null){                   out.close();            }            if (conn != null){                   conn.disconnect();            }        }    }    /**     * 设置连接参数     * @param method     * @param conn     * @throws IOException     */    private static void setConnectionParameter(String method, HttpURLConnection conn) throws IOException {           conn.setDoOutput(true);        conn.setDoInput(true);        conn.setInstanceFollowRedirects(true);        conn.setConnectTimeout(1000*10);        conn.setReadTimeout(1000*10);        conn.setRequestMethod(method);    }    /**     * 设置请求属性     * @param encoding     * @param conn     */    private static void setHeader(String encoding, HttpURLConnection conn) {           conn.setRequestProperty("Connection", "Keep-Alive");        conn.setRequestProperty("accept-language", "zh_CN");        conn.setRequestProperty("Charset", encoding);        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");        //伪装浏览器        conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36");    }    private static String getResult(BufferedReader reader) throws IOException {           StringBuffer buff = new StringBuffer();        String line = reader.readLine();        while (line != null) {   //            buff.append("\n"+ line);            buff.append(line);            line = reader.readLine();        }        String result = buff.toString();        return result;    }    private static String buildParams(Map<String, String> params) {           if (null == params || params.isEmpty()){               return "";        }        StringBuilder sb = new StringBuilder();        int i = 0;        for (Map.Entry entry : params.entrySet()) {               if (i > 0){                   sb.append("&");            }            sb.append((String)entry.getKey());            sb.append("=");            sb.append((String)entry.getValue());            i++;        }        return sb.toString();    }}

转载地址:http://qeiwz.baihongyu.com/

你可能感兴趣的文章
LeetCode - 5. 最长回文子串——字符串、动态规划
查看>>
全局锁和表锁 :给表加个字段怎么有这么多阻碍?
查看>>
二分查找与插入排序的结合使用
查看>>
892 三维形体的表面积(分析)
查看>>
16 最接近的三数之和(排序、双指针)
查看>>
279 完全平方数(bfs)
查看>>
875 爱吃香蕉的珂珂(二分查找)
查看>>
桌面图标的自动排列图标
查看>>
第十一届蓝桥杯python组第二场省赛-数字三角形
查看>>
Jquery使用需要下载的文件
查看>>
BST中某一层的所有节点(宽度优先搜索)
查看>>
广度优先搜索
查看>>
Eclipse导出项目出现resource is out of sync with the file...错误
查看>>
Dijkstra算法的总结
查看>>
SpringCloud和SprinBoot之间的关系
查看>>
C语言的运算符和表达式
查看>>
Vue实现选项卡功能
查看>>
uni-app请求头中携带token
查看>>
vue中接收后台的图片验证码并显示
查看>>
Vue入门学习笔记(1)
查看>>