Java如何优雅的调用外部Api
停下脚步才注意到 世界被染得雪白
-----------------------------------------------------------------------------------------------------------------
在日常开发的时候,经常会遇到需要调用别人的接口的场景。但是每次需要的时候,都需要百度,很麻烦,所以这里总结一下,经常调用的方法。
1.含有文件的post请求
public static String requestOCRForHttp(String url, Map<String, String> requestParams, String filePathAndName) throws Exception { String result = null; CloseableHttpClient httpClient = HttpClients.createDefault(); /** HttpPost */ HttpPost httpPost = new HttpPost(url); MultipartEntity reqEntity = new MultipartEntity(); // 建立多文件实例 FileBody filebody = new FileBody(new File(filePathAndName)); reqEntity.addPart("pic", filebody);// upload为请求后台的File upload; for (String key : requestParams.keySet()) { String value = requestParams.get(key); reqEntity.addPart(key, new StringBody(value, Charset.forName("utf-8"))); } httpPost.setEntity(reqEntity); // 设置实体 /** HttpResponse */ CloseableHttpResponse httpResponse = httpClient.execute(httpPost); try { HttpEntity httpEntity = httpResponse.getEntity(); result = EntityUtils.toString(httpEntity, "utf-8"); EntityUtils.consume(httpEntity); } finally { try { if (httpResponse != null) { httpResponse.close(); } } catch (IOException e) { logger.info("## release resouce error ##" + e); } } return result; }
2.单纯的Json
public static String sendHttpPost(String url, String JSONBody) throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); httpPost.addHeader("Content-Type", "application/json"); httpPost.setEntity(new StringEntity(JSONBody)); CloseableHttpResponse response = httpClient.execute(httpPost); // System.out.println(response.getStatusLine().getStatusCode() + " "); HttpEntity entity = response.getEntity(); String responseContent = EntityUtils.toString(entity, "UTF-8"); // System.out.println(responseContent); response.close(); httpClient.close(); return responseContent; }
3.String参数
public static String requestOCRForHttp(String url, Map<String, String> requestParams) throws Exception { String result = null; CloseableHttpClient httpClient = HttpClients.createDefault(); /** HttpPost */ HttpPost httpPost = new HttpPost(url); List<NameValuePair> params = new ArrayList<NameValuePair>(); Iterator<Entry<String, String>> it = requestParams.entrySet().iterator(); // System.out.println(params.toString()); while (it.hasNext()) { Entry<String, String> en = it.next(); String key = en.getKey(); String value = en.getValue(); if (value != null) { params.add(new BasicNameValuePair(key, value)); } } httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); /** HttpResponse */ CloseableHttpResponse httpResponse = httpClient.execute(httpPost); try { HttpEntity httpEntity = httpResponse.getEntity(); result = EntityUtils.toString(httpEntity, "utf-8"); EntityUtils.consume(httpEntity); } finally { try { if (httpResponse != null) { httpResponse.close(); } } catch (IOException e) { logger.info("## release resouce error ##" + e); } } return result; }
下一篇:
【整理】Python全栈技术学习路线