zoukankan      html  css  js  c++  java
  • java使用HttpClient 发送get、pot请求

    package eidolon.messageback.PostUtil;
    
    
    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;
    
    /**
     * 
     * @作者 陈祥
     * @创建时间 2018年6月8日 
     * @功能描述 HttpClient工具类
     */
    public class HttpUtil {
        
    
        /**
         * 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{
                     System.err.println("请求返回:"+state+"("+url+")");
                }
            }
            finally {
                if (response != null) {
                    try {
                        response.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                try {
                    httpclient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
        
    }
  • 相关阅读:
    Android传递中文参数方法(之一)
    配置类与yaml
    修改ip失败,一个意外的情况处理方法
    oracle 自增序列与触发器
    Excel导入数据带小数点的问题
    数据库null与空的区别
    小米手机无法打开程序报错Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication的解决办法
    gradle类重复的问题解决方法
    windowSoftInputMode属性讲解
    android studio 的配置
  • 原文地址:https://www.cnblogs.com/cx987514451/p/9154567.html
Copyright © 2011-2022 走看看