java HttpClient Post 请求和Get 请求

/**
 * HttpClient业务
 *
 * @author 
 * @version 1.0
 */
public class HttpClient implements java.io.Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private static final int OK = 200;  // OK: Success!
    private static final int ConnectionTimeout = 25000;
    private static final int ReadTimeout = 1200000;
    private static final String DEFAULT_CHARSET = "UTF-8";
    private static final String _GET = "GET";
    private static final String _POST = "POST";

    /**
     * Get 请求
     *
     * @param url 请求地址
     * @return 输出流对象
     * @throws
     */
    public Response get(String url) throws IOException {
        return httpRequest(url, _GET, null);
    }

    /**
     * Post 请求
     *
     * @param url 请求地址
     * @param postData 提交数据
     * @return 输出流对象
     * @throws
     */
    public Response post(String url,String postData) throws IOException {
        return httpRequest(url, _POST, postData);
    }

    /**

    /**
     * 获取http请求连接
     *
     * @param url 连接地址
     * @return http连接对象
     * @throws IOException
     */
    private HttpURLConnection getHttpURLConnection(String url) throws IOException {
        URL urlGet = new URL(url);
        HttpURLConnection con = (HttpURLConnection) urlGet.openConnection();
        return con;
    }

    /**
     * 通过http协议请求url
     *
     * @param url 提交地址
     * @param method 提交方式
     * @param postData 提交数据
     * @return 响应流
     * @throws
     */
    private Response httpRequest(String url, String method, String postData) throws IOException {
        Response res = null;
        OutputStream output;
        HttpURLConnection http;

        //创建https请求连接
        http = getHttpURLConnection(url);
        //判断https是否为空,如果为空返回null响应
        if (http != null) {
            //设置Header信息
            setHttpHeader(http, method);
            //判断是否需要提交数据
            if (method.equals(_POST) && null != postData) {
                //讲参数转换为字节提交
                byte[] bytes = postData.getBytes("UTF-8");
                //设置头信息
                http.setRequestProperty("Content-Length", Integer.toString(bytes.length));
                //开始连接
                http.connect();
                //获取返回信息
                output = http.getOutputStream();
                output.write(bytes);
                output.flush();
                output.close();
            } else {
                //开始连接
                http.connect();
            }
            //创建输出对象
            res = new Response(http);
            //获取响应代码
            if (res.getStatus() == OK) {
                return res;
            }
        }

        return res;
    }

    private void setHttpHeader(HttpURLConnection httpUrlConnection, String method)
            throws IOException {
        //设置header信息
        httpUrlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        //设置User-Agent信息
        httpUrlConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36");
        //设置可接受信息
        httpUrlConnection.setDoOutput(true);
        //设置可输入信息
        httpUrlConnection.setDoInput(true);
        //设置请求方式
        httpUrlConnection.setRequestMethod(method);
        httpUrlConnection.setConnectTimeout(ConnectionTimeout);
        httpUrlConnection.setReadTimeout(ReadTimeout);
        //设置编码
        httpUrlConnection.setRequestProperty("Charsert", "UTF-8");
    }

    public static String getUrl(Map<String, String> params, String charset)
            throws UnsupportedEncodingException {
        StringBuffer buffer = new StringBuffer("?");
        if (params == null && params.isEmpty()) {
            return null;
        }
        // 否则的话,开始拼接需要传递的值,也就是URL?AA==BB&CC==EE这样的类似的连接值
        Set<Map.Entry<String, String>> entries = params.entrySet();
        for (Map.Entry<String, String> entry : entries) {
            String name = entry.getKey();
            String value = entry.getValue();
            // 还需要进行一次判断是否为空,一定要谨慎
            if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(value)) {
                // 如果不为空的话,开始进行连接操作
                buffer.append(name).append("=").append(URLEncoder.encode(value, charset)).append("&");
            }

        }
        return buffer.toString().substring(0, buffer.toString().length() - 1);

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值