java使用httpclient封裝post請求和get的請求

來源:互聯網
上載者:User

在我們程式員生涯中,經常要複用代碼,所以我們應該養成時常整理代碼的好習慣,以下是我之前封裝的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是一個非常常用的工具,在項目開發的時候,經常需要請求第三方的介面,我整理好了這段代碼,以後回頭找的時候就方便啦。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.