• java使用httpclient封装post请求和get的请求


    在我们程序员生涯中,经常要复用代码,所以我们应该养成时常整理代码的好习惯,以下是我之前封装的httpclient的post和get请求所用的代码:

    package com.marco.common;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.URI;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.HttpStatus;
    import org.apache.http.NameValuePair;
    import org.apache.http.StatusLine;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.protocol.HTTP;
    import org.apache.http.util.EntityUtils;
    import org.apache.log4j.Logger;

    /**
    * @author 马弦
    * @date 2017年10月23日 下午2:49
    * HttpClient工具类
    */
    public class HttpUtil {

    private static Logger logger = Logger.getLogger(HttpUtil.class);

    /**
    * get请求
    * @return
    */
    public static String doGet(String url) {
    try {
    HttpClient client = new DefaultHttpClient();
    //发送get请求
    HttpGet request = new HttpGet(url);
    HttpResponse response = client.execute(request);

    /**请求发送成功,并得到响应**/
    if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
    /**读取服务器返回过来的json字符串数据**/
    String strResult = EntityUtils.toString(response.getEntity());

    return strResult;
    }
    }
    catch (IOException e) {
    e.printStackTrace();
    }

    return null;
    }

    /**
    * post请求(用于key-value格式的参数)
    * @param url
    * @param params
    * @return
    */
    public static String doPost(String url, Map params){

    BufferedReader in = null;
    try {
    // 定义HttpClient
    HttpClient client = new DefaultHttpClient();
    // 实例化HTTP方法
    HttpPost request = new HttpPost();
    request.setURI(new URI(url));

    //设置参数
    List<NameValuePair> nvps = new ArrayList<NameValuePair>();
    for (Iterator iter = params.keySet().iterator(); iter.hasNext();) {
    String name = (String) iter.next();
    String value = String.valueOf(params.get(name));
    nvps.add(new BasicNameValuePair(name, value));

    //System.out.println(name +"-"+value);
    }
    request.setEntity(new UrlEncodedFormEntity(nvps,HTTP.UTF_8));

    HttpResponse response = client.execute(request);
    int code = response.getStatusLine().getStatusCode();
    if(code == 200){ //请求成功
    in = new BufferedReader(new InputStreamReader(response.getEntity()
    .getContent(),"utf-8"));
    StringBuffer sb = new StringBuffer("");
    String line = "";
    String NL = System.getProperty("line.separator");
    while ((line = in.readLine()) != null) {
    sb.append(line + NL);
    }

    in.close();

    return sb.toString();
    }
    else{ //
    System.out.println("状态码:" + code);
    return null;
    }
    }
    catch(Exception e){
    e.printStackTrace();

    return null;
    }
    }

    /**
    * post请求(用于请求json格式的参数)
    * @param url
    * @param params
    * @return
    */
    public static String doPost(String url, String params) throws Exception {

    CloseableHttpClient httpclient = HttpClients.createDefault();
    HttpPost httpPost = new HttpPost(url);// 创建httpPost
    httpPost.setHeader("Accept", "application/json");
    httpPost.setHeader("Content-Type", "application/json");
    String charSet = "UTF-8";
    StringEntity entity = new StringEntity(params, charSet);
    httpPost.setEntity(entity);
    CloseableHttpResponse response = null;

    try {

    response = httpclient.execute(httpPost);
    StatusLine status = response.getStatusLine();
    int state = status.getStatusCode();
    if (state == HttpStatus.SC_OK) {
    HttpEntity responseEntity = response.getEntity();
    String jsonString = EntityUtils.toString(responseEntity);
    return jsonString;
    }
    else{
    logger.error("请求返回:"+state+"("+url+")");
    }
    }
    finally {
    if (response != null) {
    try {
    response.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    try {
    httpclient.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    return null;
    }

    }

    httpclient是一个非常常用的工具,在项目开发的时候,经常需要请求第三方的接口,我整理好了这段代码,以后回头找的时候就方便啦!
    ---------------------
    作者:马弦
    来源:CSDN
    原文:https://blog.csdn.net/qq9808/article/details/78320816
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    【Java】Java创建String时,什么情况放进String Pool?
    【Java】代理模式,静态代理和动态代理(基于JDK或CGLib)
    【Java】Float计算不准确
    【Spring】初始化Spring IoC容器(非Web应用),并获取Bean
    【Eclipse】安装subclipse的Eclipse插件
    【多线程】如何通过线程返回值?如何使用多线程并发查询数据
    【多线程】并发执行指定数量的线程
    【ActiveMQ】ActiveMQ在Windows的安装,以及点对点的消息发送案例
    DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常
    jQuery Validation remote的缓存请求
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/10548745.html
Copyright © 2020-2023  润新知