HttpClient使用总结
1.Get
public static String getResultWithGet(HttpServletRequest request, String url) throws Exception{ String result = null; HttpClient client =getClient(); try{ HttpGet get = new HttpGet(url); HttpResponse response = client.execute(get); result = getResponseBodyAsString(response); }finally{ client.getConnectionManager().shutdown(); } return result; }
2、Post
public static String getResultWithPost(HttpServletRequest request, String url) throws Exception{ String json = null; HttpClient client =getClient(); try{ HttpPost post = new HttpPost(url); @SuppressWarnings("unchecked") Map<String, String[]> map = request.getParameterMap(); Set<String> keySet = map.keySet(); JSONObject jo = new JSONObject(); for(String s : keySet){ if(!"".equals(map.get(s)[0])){ jo.element(s, map.get(s)[0]); } } StringEntity reqEntity = new StringEntity(jo.toString(),"UTF-8"); reqEntity.setContentType("application/json"); post.setEntity(reqEntity); HttpResponse response = client.execute(post); json = getResponseBodyAsString(response); }finally{ client.getConnectionManager().shutdown(); } return json; }
3、Put
public static String getResultWithPut(HttpServletRequest request, String url) throws Exception{ String json = null; HttpClient client =getClient(); try{ HttpPut put = new HttpPut(url); @SuppressWarnings("unchecked") Map<String, String[]> map = request.getParameterMap(); Set<String> keySet = map.keySet(); JSONObject jo = new JSONObject(); for(String s : keySet){ if(!"".equals(map.get(s)[0])){ jo.element(s, map.get(s)[0]); } } StringEntity reqEntity = new StringEntity(jo.toString(),"UTF-8"); reqEntity.setContentType("application/json"); put.setEntity(reqEntity); HttpResponse response = client.execute(put); json = getResponseBodyAsString(response); }finally{ client.getConnectionManager().shutdown(); } return json; }
4、Delete
public static String getResultWithDelete(HttpServletRequest request, String url) throws Exception{ String result = null; HttpClient client =getClient(); try{ HttpDelete delete = new HttpDelete(url); HttpResponse response = client.execute(delete); result = getResponseBodyAsString(response); }finally{ client.getConnectionManager().shutdown(); } return result; }
5、getResponseBodyAsString
public static String getResponseBodyAsString(HttpResponse response) throws Exception { StringBuilder sb = new StringBuilder(); HttpEntity httpEntity = response.getEntity(); if(httpEntity != null){ httpEntity = new BufferedHttpEntity(httpEntity); InputStream is = httpEntity.getContent(); BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8")); String str; while((str=br.readLine())!=null){ sb.append(str); } is.close(); } return sb.toString(); }
6、文件上传
public String uploadAttachment(HttpServletRequest request){ String json = null; HttpClient client = TicketUtils.getClient(); try { HttpPost post = new HttpPost(url); DiskFileItemFactory fac = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(fac); upload.setHeaderEncoding("UTF-8"); @SuppressWarnings("unchecked") List<FileItem> fileList = upload.parseRequest(request); Iterator<FileItem> it = fileList.iterator(); List<File> tempFileList = new ArrayList<File>(); while (it.hasNext()) { FileItem item = it.next(); if (!item.isFormField()) { String fileName = item.getName(); if (fileName != null) { File file = new File(fileName); item.write(file); MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null,Charset.forName("UTF-8")); FileBody fileBody = new FileBody(file); multipartEntity.addPart(fileName, fileBody); post.setEntity(multipartEntity); tempFileList.add(file); } } } HttpResponse response = client.execute(post); json = TicketUtils.getResponseBodyAsString(response); //delete temp files for(File file : tempFileList){ file.delete(); } } catch (Exception e) { log.error(e); json = JsonUtil.getJsonString(Const.ERROR_MESSAGE, EM.TICKET_EXCEPTION); }finally{ client.getConnectionManager().shutdown(); } return json; }
7、文件下载
public void downloadAttachment(HttpServletRequest request, HttpServletResponse response, @PathVariable("fileId") Integer fileId){ HttpClient client = TicketUtils.getClient(); try { HttpGet get = new HttpGet(urlStr); ResponseHandler<byte[]> handler = new ResponseHandler<byte[]>() { public byte[] handleResponse(HttpResponse response) throws ClientProtocolException, IOException { HttpEntity entity = response.getEntity(); if (entity != null) { return EntityUtils.toByteArray(entity); } else { return null; } } }; byte[] charts = client.execute(get, handler); URL url = new URL(urlStr); HttpURLConnection uc = (HttpURLConnection)url.openConnection(); response.reset(); response.addHeader("Content-disposition",uc.getHeaderField("Content-disposition")); OutputStream output = new BufferedOutputStream(response.getOutputStream()); output.write(charts); output.flush(); output.close(); get.releaseConnection(); } catch (Exception e) { log.error(e); }finally{ client.getConnectionManager().shutdown(); } }