• java HttpClient操作工具类


    maven:

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.2</version>
            </dependency>
    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;
    
    /**
     * @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;
        }
    
    }
  • 相关阅读:
    [Visual Studio] [Config] [Transformation] [SlowCheetah] 在非Web工程中使用Transformation
    [SQLSERVER] 把TransactionLog截断
    [Windows] [Firewall] 增加进入规则
    [POWERSHELL] [.net 3.5] [Windows Server] 在Windows Server上安装.NET3.5
    杂碎
    VSCode 使用Settings Sync同步配置(最新版教程,非常简单)
    JavaScript:ES2019 的新特性
    重新认识构造函数、原型和原型链
    如何实现 React 中的状态自动保存?
    深拷贝
  • 原文地址:https://www.cnblogs.com/chenmz1995/p/11050927.html
Copyright © 2020-2023  润新知