1. 程式人生 > >Http請求工具類

Http請求工具類

HttpUtil.java

package com.jrbac.util;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
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.entity.mime.HttpMultipartMode; import
org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import
org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Http工具類,傳送Http請求, Get請求請將引數放在url中 Post請求請將引數放在Map中 * * @author 程高偉 * @date 2017年1月5日 下午6:03:50 */ public classHttpUtil{ private static final Logger log = LoggerFactory.getLogger(HttpUtil.class); private static final CloseableHttpClient httpclient = HttpClients.createDefault(); private static final String userAgent = "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36"; /** * 傳送HttpGet請求 * * @param url * 請求地址 * @return 返回字串 */ publicstatic String sendGet(String url) { String result = null; CloseableHttpResponse response = null; try { HttpGet httpGet = new HttpGet(url); httpGet.setHeader("User-Agent", userAgent); response = httpclient.execute(httpGet); HttpEntity entity = response.getEntity(); if (entity != null) { result = EntityUtils.toString(entity); } } catch (Exception e) { log.error("處理失敗 {}" + e); e.printStackTrace(); } finally { if (response != null) { try { response.close(); } catch (IOException e) { log.error(e.getMessage()); } } } return result; } /** * 傳送HttpPost請求,引數為map * * @param url * 請求地址 * @param map * 請求引數 * @return 返回字串 */ publicstatic String sendPost(String url, Map<String, String> map) { // 設定引數 List<NameValuePair> formparams = new ArrayList<NameValuePair>(); for (Map.Entry<String, String> entry : map.entrySet()) { formparams.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } // 編碼 UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(formparams, Consts.UTF_8); // 取得HttpPost物件 HttpPost httpPost = new HttpPost(url); // 防止被當成攻擊新增的 httpPost.setHeader("User-Agent", userAgent); // 引數放入Entity httpPost.setEntity(formEntity); CloseableHttpResponse response = null; String result = null; try { // 執行post請求 response = httpclient.execute(httpPost); // 得到entity HttpEntity entity = response.getEntity(); // 得到字串 result = EntityUtils.toString(entity); } catch (IOException e) { log.error(e.getMessage()); } finally { if (response != null) { try { response.close(); } catch (IOException e) { log.error(e.getMessage()); } } } return result; } /** * 傳送HttpPost請求,引數為檔案,適用於微信上傳素材 * * @param url * 請求地址 * @param file * 上傳的檔案 * @return 返回字串 * @throws IOException * @throws ClientProtocolException */ publicstatic String sendPost(String url, File file) { String result = null; HttpPost httpPost = new HttpPost(url); // 防止被當成攻擊新增的 httpPost.setHeader("User-Agent", userAgent); MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create(); multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); multipartEntity.addPart("media", new FileBody(file)); httpPost.setEntity(multipartEntity.build()); CloseableHttpResponse response = null; try { response = httpclient.execute(httpPost); HttpEntity entity = response.getEntity(); result = EntityUtils.toString(entity); } catch (IOException e) { log.error(e.getMessage()); } finally { // 關閉CloseableHttpResponse if (response != null) { try { response.close(); } catch (IOException e) { log.error(e.getMessage()); } } } return result; } /** * 傳送HttpPost請求,引數為json字串 * * @param url * @param jsonStr * @return */ publicstatic String sendPost(String url, String jsonStr) { String result = null; // 字串編碼 StringEntity entity = new StringEntity(jsonStr, Consts.UTF_8); // 設定content-type entity.setContentType("application/json"); HttpPost httpPost = new HttpPost(url); // 防止被當成攻擊新增的 httpPost.setHeader("User-Agent", userAgent); // 接收引數設定 httpPost.setHeader("Accept", "application/json"); httpPost.setEntity(entity); CloseableHttpResponse response = null; try { response = httpclient.execute(httpPost); HttpEntity httpEntity = response.getEntity(); result = EntityUtils.toString(httpEntity); } catch (IOException e) { log.error(e.getMessage()); } finally { // 關閉CloseableHttpResponse if (response != null) { try { response.close(); } catch (IOException e) { log.error(e.getMessage()); } } } return result; } /** * 傳送不帶引數的HttpPost請求 * * @param url * @return */ publicstatic String sendPost(String url) { String result = null; // 得到一個HttpPost物件 HttpPost httpPost = new HttpPost(url); // 防止被當成攻擊新增的 httpPost.setHeader("User-Agent", userAgent); CloseableHttpResponse response = null; try { // 執行HttpPost請求,並得到一個CloseableHttpResponse response = httpclient.execute(httpPost); // 從CloseableHttpResponse中拿到HttpEntity HttpEntity entity = response.getEntity(); // 將HttpEntity轉換為字串 result = EntityUtils.toString(entity); } catch (IOException e) { log.error(e.getMessage()); } finally { // 關閉CloseableHttpResponse if (response != null) { try { response.close(); } catch (IOException e) { log.error(e.getMessage()); } } } return result; }
/*** Send a POST request to itcuties.com* @param query* @throws IOException*/public String echoCuties(String query) throws IOException {// Encode the queryString encodedQuery = URLEncoder.encode(query, "UTF-8");// This is the data that is going to be send to itcuties.com via POST request// 'e' parameter contains data to echoString postData = "e=" + encodedQuery;// Connect to google.comURL url = new URL("http://echo.itcuties.com");HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setDoOutput(true);connection.setRequestMethod("POST");connection.setRequestProperty("Content-Type""application/x-www-form-urlencoded");connection.setRequestProperty("Content-Length",  String.valueOf(postData.length()));// Write dataOutputStream os = connection.getOutputStream();os.write(postData.getBytes());// Read responseStringBuilder responseSB = new StringBuilder();BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ( (line = br.readLine()) != null)responseSB.append(line);// Close streamsbr.close();os.close();return responseSB.toString();}// Run this examplepublic static void main(String[] args) {try {System.out.println(new POSTSenderExample().echoCuties("Hi there!"));catch (IOException ioe) {ioe.printStackTrace();}}
}