package com.topsec.ws.util; import com.topsec.ws.constant.Constant; import org.apache.http.*; import org.apache.http.client.ClientProtocolException; 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.ContentType; 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.StringBody; 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; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.io.*; /** * @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; } /** * 上傳文件 * @param url * @param filePth * @param paramsMap */ public static void uploadFile(String url,String filePth,Map paramsMap){ HttpClient HTTP_CLIENT = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); try { final MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create(); multipartEntity.setCharset(Charset.forName("utf-8")); multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); if(null != paramsMap){ for (Iterator iter = paramsMap.keySet().iterator(); iter.hasNext();) { String name = (String) iter.next(); String value = String.valueOf(paramsMap.get(name)); multipartEntity.addPart(name,new StringBody(value, ContentType.MULTIPART_FORM_DATA)); //System.out.println(name +"-"+value); } } File file = new File(filePth); multipartEntity.addBinaryBody("file", file);//文件字段 //builder.addBinaryBody("upfile", file, ContentType.DEFAULT_BINARY, textFileName); //builder.addTextBody("text", message, ContentType.DEFAULT_BINARY); httpPost.setEntity(multipartEntity.build()); //httpPost.setHeader("token", token);//設置請求頭 String result = EntityUtils.toString(HTTP_CLIENT.execute(httpPost).getEntity()); } catch (IOException e) { e.printStackTrace(); } } public static void postFile(String url,Map paramsMap,String dir,String fileName){ CloseableHttpClient closeHttpClient = HttpClients.createDefault(); CloseableHttpResponse httpResponse = null; //發送Post請求 //http://127.0.0.1:9090/myws/test/getzichan2.do HttpPost httpPost = new HttpPost(url); //設置Post參數 List<NameValuePair> params = new ArrayList<>(); List<NameValuePair> nvps = new ArrayList<NameValuePair>(); if(null != paramsMap){ for (Iterator iter = paramsMap.keySet().iterator(); iter.hasNext();) { String name = (String) iter.next(); String value = String.valueOf(paramsMap.get(name)); params.add(new BasicNameValuePair(name, value)); } } try { //轉換參數並設置編碼格式 httpPost.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8)); //執行Post請求 得到Response對象 httpResponse = closeHttpClient.execute(httpPost); //httpResponse.getStatusLine() 響應頭信息 System.out.println(httpResponse.getStatusLine()); InputStream inputStream = httpResponse.getEntity().getContent(); ByteArrayOutputStream byteArray = new ByteArrayOutputStream(); byte[] buff = new byte[1024*1024]; //如果是稍微大的文件,這裏配置的大一些 int len = 0; while((len = inputStream.read(buff)) > 0) { //把從服務端讀取的文件流保存到ByteArrayOutputSteam中 byteArray.write(buff, 0, len); byteArray.flush(); } String aaa = new String(byteArray.toByteArray()); FileUtil.byteToFile(byteArray.toByteArray(),dir,fileName); inputStream.close(); httpResponse.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(httpResponse != null){ try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if(closeHttpClient != null){ try { closeHttpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void main(String[] argus){ postFile("http://localhost:8080/portal-es/portal/unitIP.do?cmd=SAXcreate",null, Constant.wsUpload.get(Constant.WsUnitKey.downLoadPath),UuidUtil.getUUID()+".xml"); } }
httpUtils
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.