HttpProxyUtil HTTP请求工具类源码

来源:互联网 发布:数据库系统实现第三版 编辑:程序博客网 时间:2024/06/07 13:10

查看原文:http://www.ibloger.net/article/124.html

HttpProxyUtil HTTP请求工具类源码

package com.chinatelecom.web.trade.utils;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import org.apache.log4j.Logger;/** * HTTP请求代理类 *  * @author X-rapido * @description 发送Get Post请求 */public class HttpProxyUtil {    private static Logger logger = Logger.getLogger(HttpProxyUtil.class);    /**     * 使用URLConnection进行GET请求     * @param api_url     * @return     */    public static String sendGet(String api_url) {        return sendGet(api_url, "", "utf-8");    }    /**     * 使用URLConnection进行GET请求     * @param api_url     * @param param     * @return     */    public static String sendGet(String api_url, String param) {        return sendGet(api_url, param, "utf-8");    }    /**     * 使用URLConnection进行GET请求     * @param api_url 请求路径     * @param param 请求格式有name1=value1&name2=value2、json、xml、map或其他形式,具体要看接收方的取值, 可以为空     * @param charset 字符集     * @return     */    public static String sendGet(String api_url, String param, String charset) {        StringBuffer buffer = new StringBuffer();         try {            // 判断有无参数,若是拼接好的url,就不必再拼接了            if(param!=null && !"".equals(param)){                api_url = api_url + "?" + param;            }            logger.info("请求的路径是:" + api_url);            URL realUrl = new URL(api_url);            // 打开联接            URLConnection conn = realUrl.openConnection();            // 设置通用的请求属性            conn.setRequestProperty("accept", "*/*");            conn.setRequestProperty("connection", "Keep-Alive");            conn.setRequestProperty("user-agent", "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1; SV1)");            conn.setConnectTimeout(12000);  //设置连接主机超时(单位:毫秒)              conn.setReadTimeout(12000); // 设置从主机读取数据超时(单位:毫秒)              conn.connect(); // 建立实际的联接            // 定义 BufferedReader输入流来读取URL的相应            try (BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset))) {                String line;                while ((line = in.readLine()) != null) {//                  buffer.append("\n"+line);                    buffer.append(line);                }            }        } catch (Exception e) {            logger.error("发送GET请求出现异常! " + e.getMessage());            e.printStackTrace();        }        logger.info("响应返回数据:" + buffer.toString());        return buffer.toString();    }    /**     * 使用URLConnection进行POST请求     * @param api_url 请求路径     * @param param 请求格式有name1=value1&name2=value2、json、xml、map或其他形式,具体要看接收方的取值,最好不为空     * @return     */    public static String sendPost(String api_url, String param) {        return sendPost(api_url, param , "utf-8");    }    /**     * 使用URLConnection进行POST请求     * @param api_url 请求路径     * @param param 请求格式有name1=value1&name2=value2、json、xml、map或其他形式,具体要看接收方的取值,最好不为空     * @param charset 字符集     * @return     */    public static String sendPost(String api_url, String param, String charset) {        StringBuffer buffer = new StringBuffer();         try {            logger.info("请求的路径是:"+ api_url+",参数是:" + param);            URL realUrl = new URL(api_url);            // 打开联接            URLConnection conn = realUrl.openConnection();            // 设置通用的请求属性            conn.setRequestProperty("accept", "*/*");            conn.setRequestProperty("connection", "Keep-Alive");            conn.setRequestProperty("user-agent", "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1; SV1)");            conn.setConnectTimeout(12000);  //设置连接主机超时(单位:毫秒)              conn.setReadTimeout(12000); // 设置从主机读取数据超时(单位:毫秒)              // 发送POST请求必须设置如下两行            conn.setDoOutput(true);            conn.setDoInput(true);            // 获取URLConnection对象对应的输出流            try (PrintWriter out = new PrintWriter(conn.getOutputStream())) {                out.print(param); // 发送请求参数                out.flush();// flush输出流的缓冲            }            // 定义 BufferedReader输入流来读取URL的相应,得指明使用UTF-8编码,否则到API服务器XML的中文不能被成功识别            try (BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset))) {                String line;                while ((line = in.readLine()) != null) {//                  buffer.append("\n"+line);                    buffer.append(line);                }            }        } catch (Exception e) {            logger.error("发送POST请求出现异常! " + e.getMessage());            e.printStackTrace();        }        logger.info("响应返回数据:" + buffer.toString());        return buffer.toString();    }}
1 0
原创粉丝点击