/** * */package Default;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.List;import org.apache.commons.lang3.StringUtils;import org.apache.http.Consts;import org.apache.http.HttpEntity;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.HttpDelete;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.methods.HttpPut;import org.apache.http.entity.StringEntity;import org.apache.http.entity.mime.HttpMultipartMode;import org.apache.http.entity.mime.MultipartEntityBuilder;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.tomtop.core.constants.MediaTypes;/** * * 功能说明::Http请求工具类 * * HttpUtils.java * */public class HttpUtils { private final static Logger log = LoggerFactory.getLogger(HttpUtils.class); /** * Http GET 方式访问 * @param url * @return * @throws ClientProtocolException * @throws IOException * @author fwenrong */ public static String get(String url) throws ClientProtocolException, IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); CloseableHttpResponse response = httpClient.execute(httpGet); try{ HttpEntity entity = response.getEntity(); log.debug("Response Status: " + response.getStatusLine()); if (entity != null) { //EntityUtils类:目标服务器响应可信任,并且响应包体长度不大 return EntityUtils.toString(entity,Consts.UTF_8); } return null; }finally{ response.close(); httpClient.close(); } } /** * Http POST 方式访问 * @param url 请求URL * @param data 请求参数 * @return * @throws IOException * @throws ClientProtocolException * @author fwenrong * */ public static String post(String url, List<? extends org.apache.http.NameValuePair> data) throws ClientProtocolException, IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); if(data != null){ httpPost.setEntity(new UrlEncodedFormEntity(data,Consts.UTF_8)); } CloseableHttpResponse response = httpClient.execute(httpPost); try{ HttpEntity entity = response.getEntity(); log.debug("Response Status: " + response.getStatusLine()); if (entity != null) { return EntityUtils.toString(entity,Consts.UTF_8); } return null; }finally{ response.close(); httpClient.close(); } } /** * http的PUT方式访问 * @param url 请求URL url +"/"+put更新参数 * @param data 请求参数 * @return * @throws ClientProtocolException * @throws IOException * @author 3071 */ public static String put(String url, List<? extends org.apache.http.NameValuePair> data) throws ClientProtocolException, IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPut httpPut = new HttpPut(url); if(data != null){ httpPut.setEntity(new UrlEncodedFormEntity(data,Consts.UTF_8)); } CloseableHttpResponse response = httpClient.execute(httpPut); try{ HttpEntity entity = response.getEntity(); log.debug("Response Status: " + response.getStatusLine()); if (entity != null) { return EntityUtils.toString(entity,Consts.UTF_8); } return null; }finally{ response.close(); httpClient.close(); } } /** * http delete 方式访问 * @param url url地址, 格式:url +"/"+删除参数 * @return * @throws ClientProtocolException * @throws IOException * @author 3071 */ public static String delete(String url) throws ClientProtocolException, IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpDelete httpDelete = new HttpDelete(url); CloseableHttpResponse response = httpClient.execute(httpDelete); try{ HttpEntity entity = response.getEntity(); log.debug("Response Status: " + response.getStatusLine()); if (entity != null) { return EntityUtils.toString(entity,Consts.UTF_8); } return null; }finally{ response.close(); httpClient.close(); } } /** * Http POST方式请求JSON包体 * @param url 请求URL * @param data json包体 * @return * @throws ClientProtocolException * @throws IOException * @author 3071 */ public static String postJson(String url,String data) throws ClientProtocolException, IOException { return HttpUtils.post(url, data, MediaTypes.JSON); } /** * Http POSt方式请求 xml包体 * @param url 请求URL * @param data xml包体 * @return * @throws ClientProtocolException * @throws IOException * @author 3071 */ public static String postXml(String url,String data) throws ClientProtocolException, IOException { return HttpUtils.post(url, data, MediaTypes.APPLICATION_XML); } /** * Http POST 方式访问 * @param url 请求URL * @param data 请求参数(可以是json串 也可以是xml格式包体) * @param contentType 对应请求内容格式 * @return * @throws ClientProtocolException * @throws IOException * @author 3071 */ public static String post(String url,String data,String contentType) throws ClientProtocolException, IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); if(StringUtils.isNotEmpty(data)){ StringEntity entity = new StringEntity(data, Consts.UTF_8); entity.setContentType(contentType); httpPost.setEntity(entity); } CloseableHttpResponse response = httpClient.execute(httpPost); try{ HttpEntity entity = response.getEntity(); log.debug("Response Status: " + response.getStatusLine()); if (entity != null) { return EntityUtils.toString(entity,Consts.UTF_8); } return null; }finally{ response.close(); httpClient.close(); } } /** * Http PUT 方式访问 * @param url url地址, 格式:url +"/"+put参数 * @param data 请求参数(可以是json串 也可以是xml格式包体) * @param contentType 对应请求内容格式 * @return * @throws ClientProtocolException * @throws IOException * @author 3071 */ public static String put(String url,String data,String contentType) throws ClientProtocolException, IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPut httpPut = new HttpPut(url); if(StringUtils.isNotEmpty(data)){ StringEntity entity = new StringEntity(data, Consts.UTF_8); entity.setContentType(contentType); httpPut.setEntity(entity); } CloseableHttpResponse response = httpClient.execute(httpPut); try{ HttpEntity entity = response.getEntity(); log.debug("Response Status: " + response.getStatusLine()); if (entity != null) { return EntityUtils.toString(entity,Consts.UTF_8); } return null; }finally{ response.close(); httpClient.close(); } } /** * Http PUT方式请求JSON包体 * @param url url地址, 格式:url +"/"+put参数 * @param data json包体 * @return * @throws ClientProtocolException * @throws IOException * @author 3071 */ public static String putJson(String url,String data) throws ClientProtocolException, IOException { return HttpUtils.put(url, data, MediaTypes.JSON); } /** * Http PUT方式请求 xml包体 * @param url url地址, 格式:url +"/"+put参数 * @param data xml包体 * @return * @throws ClientProtocolException * @throws IOException * @author 3071 */ public static String putXml(String url,String data) throws ClientProtocolException, IOException { return HttpUtils.put(url, data, MediaTypes.APPLICATION_XML); } /** * Http Post 表单提交 附加一个文件 * @param url 请求url * @param file 文件 * @return * @author 3071 * @throws IOException * @throws ClientProtocolException */ public static String postFile(String url,File file) throws ClientProtocolException, IOException{ CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); HttpEntity requestEntity = MultipartEntityBuilder.create() .setMode(HttpMultipartMode.BROWSER_COMPATIBLE) .addBinaryBody("file",FileUtils.toByteArray(file)) .setCharset(Consts.UTF_8).build(); httpPost.setEntity(requestEntity); CloseableHttpResponse response = httpClient.execute(httpPost); HttpEntity responseEntity = null; try{ String responseStr = null; //获取响应对象 responseEntity = response.getEntity(); log.debug("Response Status: " + response.getStatusLine()); if (responseEntity != null) { responseStr = EntityUtils.toString(responseEntity,Consts.UTF_8); } //销毁 EntityUtils.consumeQuietly(responseEntity); return responseStr; }finally{ response.close(); httpClient.close(); } } /** * 模拟文件http上传(基于jdk原始方式) * @param url * @param file * @return * @author fwenrong */ public static String postFileOriginal(String url,File file){ try { URL postUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) postUrl.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); byte[] f = FileUtils.toByteArray(file); //StringBuilder sb = new StringBuilder(); conn.setRequestProperty("Content-Type", "multipart/form-data"); conn.setRequestProperty("Content-Length", String.valueOf(f.length)); OutputStream out = conn.getOutputStream(); out.write(f); out.flush(); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String responseStr = ""; String line = null; while((line = in.readLine()) != null){ responseStr += line; } in.close(); out.close(); return responseStr; } catch (MalformedURLException e) { log.error("MalformedURLException:"+url); e.printStackTrace(); } catch (IOException e) { log.error("IOException:IO异常。"); e.printStackTrace(); } return null; }}
转载于:https://www.cnblogs.com/zhc-hnust/p/5816627.html
相关资源:httpclient.jar包下载