Java使用HttpURLConnection发送POST和GET请求

来源:互联网 发布:access数据库下载 编辑:程序博客网 时间:2024/05/20 22:38

代码示例

/** * http 请求工具类 * Created by zhh on 2017/12/08. */public class HttpHelper {    // 每次读取大小    private final static int READ_BODY_SIZE = 5120;    /**     * post 方式请求内容     * @param strUrl url地址     * @param paramMap 参数集     * @return     */    public static String post(String strUrl, Map<String, Object> paramMap) {        StringBuffer sb = new StringBuffer();        for (String strKey : paramMap.keySet()) {            sb.append("&");            sb.append(strKey);            sb.append("=");            sb.append(paramMap.get(strKey));        }        sb.replace(0, 1, "?");        if (sb.length() > 0) {            return post(strUrl + sb.toString(), "");        }        return post(strUrl + sb.toString(), "");    }    /**     * get 方式请求内容     * @param strUrl url地址     * @param paramMap 参数集     * @return     */    public static String get(String strUrl, Map<String, Object> paramMap) {        StringBuffer sb = new StringBuffer();        for (String strKey : paramMap.keySet()) {            sb.append("&");            sb.append(strKey);            sb.append("=");            sb.append(paramMap.get(strKey));        }        sb.replace(0, 1, "?");        if (sb.length() > 0) {            return get(strUrl + sb.toString());        }        return get(strUrl + sb.toString());    }    /**     * post 方式请求内容     * @param strUrl url地址     * @param content 输出内容     * @return     */    public static String post(String strUrl, String content) {        return post(strUrl, content, 180);    }    /**     * get 方式请求内容     * @param strUrl url地址     * @return     */    public static String get(String strUrl) {        return get(strUrl, 180);    }    /**     * post 方式请求内容     * @param strUrl url地址     * @param content 输出内容     * @param timeoutSecond 设置延时时间     * @return     */    public static String post(String strUrl, String content, int timeoutSecond) {        try {            URL url = new URL(strUrl);            HttpURLConnection con = (HttpURLConnection) url.openConnection();            // 连接主机超时 毫秒            con.setConnectTimeout(timeoutSecond * 1000);            // 从主机读取数据超时毫秒            con.setReadTimeout(timeoutSecond * 1000);            // 设置从HttpURLConnection读入            con.setDoInput(true);            // 设置是否向httpUrlConnection输出, 因为这个是post请求, 参数要放在http正文内, 因此需要设为true, 默认情况下是false            con.setDoOutput(true);            // 设置该URLConnection的allowUserInteraction请求头字段的值            con.setAllowUserInteraction(false);            con.setUseCaches(true);            con.setRequestMethod("POST");            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");            // 此处getOutputStream会隐含的进行connect,所以在开发中不调用上述的connect()也可以            BufferedWriter bout = new BufferedWriter(new OutputStreamWriter(con.getOutputStream()));            bout.write(content);            bout.flush();            bout.close();            return streamReadHtml(con.getInputStream());        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    /**     * get 方式请求内容     * @param strUrl url地址     * @param timeoutSecond 设置延时时间     * @return     */    public static String get(String strUrl, int timeoutSecond) {        try {            URL url = new URL(strUrl);            HttpURLConnection con = (HttpURLConnection) url.openConnection();            // 连接主机超时 毫秒            con.setConnectTimeout(timeoutSecond * 1000);            // 从主机读取数据超时毫秒            con.setReadTimeout(timeoutSecond * 1000);            con.setRequestMethod("GET");            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");            con.connect();            return streamReadHtml(con.getInputStream());        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    /**     * 读取内容     * @param istream     * @return     * @throws UnsupportedEncodingException     */    public static String streamReadHtml(InputStream istream) throws UnsupportedEncodingException {        String html = "";        byte[] responseBody = new byte[READ_BODY_SIZE];        int npos = 0;        int nread = 0;        try {            while ((nread = istream.read(responseBody, npos, responseBody.length - npos)) >= 0) {                npos += nread;                byte[] tmpBuf = new byte[npos + READ_BODY_SIZE];                System.arraycopy(responseBody, 0, tmpBuf, 0, npos);                responseBody = tmpBuf;            }        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                if (istream != null) {                    istream.close();                }                istream = null;            } catch (Exception e) {                e.printStackTrace();            }        }        html = new String(responseBody, 0, npos, "UTF-8");        return html;    }}

测试用例

public static void main(String[] args) {    String reqUrl = "https://www.baidu.com";    Map<String, Object> paramMap = new HashMap<>();    paramMap.put("wd", "测试");    System.out.println(HttpHelper.post(reqUrl, paramMap));}
阅读全文
0 0
原创粉丝点击