java 發送http get post 請求,以及java通過httpclient中轉上傳文件
package com.websocket.common.http.util; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; 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.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; public class HttpRequestUtil { private static final Logger LOGGER = LoggerFactory.getLogger(HttpRequestUtil.class); /** * send http get請求 * @param url * @return */ public static String requestGet(String url){ CloseableHttpResponse response =null; try { CloseableHttpClient client = HttpClients.createDefault(); //發送get 請求 HttpGet request = new HttpGet(url); request.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36"); request.addHeader("accept", "*/*"); request.addHeader("connection", "Keep-Alive"); response = client.execute(request); if((null!=response) && (HttpStatus.SC_OK == response.getStatusLine().getStatusCode())){ //讀取返回結果 String result = ""; if(null != response.getEntity()){ result = EntityUtils.toString(response.getEntity(),"utf-8"); } return result; }else{ if(null!=response&&null!=response.getStatusLine()){ return "send requestGet statusCode:"+response.getStatusLine().getStatusCode(); }else{ return "send requestGet no response"; } } } catch (Exception e) { LOGGER.error("send requestGet ERROR",e); return "requestGet ERROR"; } finally { if(null!=response){ try { response.close(); } catch (Exception e2) { LOGGER.error("response close error:",e2); } } } } /** * send http post request 請求 * @param url * @param params * @return */ public static String requestPost(String url,Map<String,String> params){ CloseableHttpResponse response = null; String result = ""; try { List<NameValuePair> formParams = new ArrayList<NameValuePair>(); for (Map.Entry<String, String> entry : params.entrySet()) { formParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } // 編碼 HttpEntity formEntity = new UrlEncodedFormEntity(formParams, Consts.UTF_8); CloseableHttpClient client = HttpClients.createDefault(); HttpPost request = new HttpPost(url); request.setEntity(formEntity); request.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36"); request.addHeader("accept", "*/*"); request.addHeader("connection", "Keep-Alive"); response = client.execute(request); if((null!=response) && (HttpStatus.SC_OK == response.getStatusLine().getStatusCode())){ //讀取返回結果 if(null != response.getEntity()){ result = EntityUtils.toString(response.getEntity(),"utf-8"); } return result; }else{ if(null!=response&&null!=response.getStatusLine()){ return "send requestPost statusCode:"+response.getStatusLine().getStatusCode(); }else{ return "send requestPost no response"; } } } catch (Exception e) { LOGGER.error("send POST request Exception:",e); return "Post request Exception"; } finally { if(null!=response){ try { response.close(); } catch (Exception e2) { LOGGER.error("response close error:",e2); } } } } /** * 中轉上傳,使用wx頭像上傳等 * @param url * @param file * @return */ public static String requestPost(String url,File file){ CloseableHttpResponse response = null; String result = ""; try { MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create(); multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); multipartEntity.addPart("media", new FileBody(file)); CloseableHttpClient client = HttpClients.createDefault(); HttpPost request = new HttpPost(url); request.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36"); request.addHeader("accept", "*/*"); request.addHeader("connection", "Keep-Alive"); request.setEntity(multipartEntity.build()); response = client.execute(request); if((null!=response) && (HttpStatus.SC_OK == response.getStatusLine().getStatusCode())){ //讀取返回結果 if(null != response.getEntity()){ result = EntityUtils.toString(response.getEntity(),"utf-8"); } return result; }else{ if(null!=response&&null!=response.getStatusLine()){ return "send requestPost uploadfile statusCode:"+response.getStatusLine().getStatusCode(); }else{ return "send requestPost uploadfile no response"; } } } catch (Exception e) { LOGGER.error("send POST uploadfile request Exception:",e); return "Post uploadfile request Exception"; } finally { if(null!=response){ try { response.close(); } catch (Exception e2) { LOGGER.error("response close error:",e2); } } } } public static void main(String args[]){ String result = requestPost("http://api.app.wantoutiao.net/news/newsList",new HashMap<String,String>()); System.out.println(result); } }