| package com.matrix.component.dingding; | 
|   | 
| import com.alibaba.fastjson.JSON; | 
| import com.alibaba.fastjson.JSONObject; | 
| import org.apache.commons.io.FileUtils; | 
| import org.apache.http.HttpEntity; | 
| import org.apache.http.client.config.RequestConfig; | 
| 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.client.protocol.HttpClientContext; | 
| import org.apache.http.entity.ContentType; | 
| import org.apache.http.entity.StringEntity; | 
| 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.impl.client.RedirectLocations; | 
| import org.apache.http.protocol.BasicHttpContext; | 
| import org.apache.http.protocol.HttpContext; | 
| import org.apache.http.util.EntityUtils; | 
|   | 
| import java.io.File; | 
| import java.io.IOException; | 
| import java.net.URI; | 
|   | 
|   | 
| public class HttpHelper { | 
|   | 
|     public static JSONObject httpGet(String url) throws OApiException { | 
|         HttpGet httpGet = new HttpGet(url); | 
|         CloseableHttpResponse response = null; | 
|         CloseableHttpClient httpClient = HttpClients.createDefault(); | 
|         RequestConfig requestConfig = RequestConfig.custom(). | 
|                 setSocketTimeout(2000).setConnectTimeout(2000).build(); | 
|         httpGet.setConfig(requestConfig); | 
|   | 
|         try { | 
|             response = httpClient.execute(httpGet, new BasicHttpContext()); | 
|   | 
|             if (response.getStatusLine().getStatusCode() != 200) { | 
|   | 
|                 System.out.println("request url failed, http code=" + response.getStatusLine().getStatusCode() | 
|                                    + ", url=" + url); | 
|                 return null; | 
|             } | 
|             HttpEntity entity = response.getEntity(); | 
|             if (entity != null) { | 
|                 String resultStr = EntityUtils.toString(entity, "utf-8"); | 
|   | 
|                 JSONObject result = JSON.parseObject(resultStr); | 
|                 if (result.getInteger("errcode") == 0) { | 
|                     return result; | 
|                 } else { | 
|                     System.out.println("request url=" + url + ",return value="); | 
|                     System.out.println(resultStr); | 
|                     int errCode = result.getInteger("errcode"); | 
|                     String errMsg = result.getString("errmsg"); | 
|                     throw new OApiException(errCode, errMsg); | 
|                 } | 
|             } | 
|         } catch (IOException e) { | 
|             System.out.println("request url=" + url + ", exception, msg=" + e.getMessage()); | 
|             e.printStackTrace(); | 
|         } finally { | 
|             if (response != null) try { | 
|                 response.close(); | 
|             } catch (IOException e) { | 
|                 e.printStackTrace(); | 
|             } | 
|         } | 
|   | 
|         return null; | 
|     } | 
|      | 
|      | 
|     public static JSONObject httpPost(String url, Object data) throws OApiException { | 
|         HttpPost httpPost = new HttpPost(url); | 
|         CloseableHttpResponse response = null; | 
|         CloseableHttpClient httpClient = HttpClients.createDefault(); | 
|         RequestConfig requestConfig = RequestConfig.custom(). | 
|                 setSocketTimeout(2000).setConnectTimeout(2000).build(); | 
|         httpPost.setConfig(requestConfig); | 
|         httpPost.addHeader("Content-Type", "application/json"); | 
|   | 
|         try { | 
|             StringEntity requestEntity = new StringEntity(JSON.toJSONString(data), "utf-8"); | 
|             httpPost.setEntity(requestEntity); | 
|              | 
|             response = httpClient.execute(httpPost, new BasicHttpContext()); | 
|   | 
|             if (response.getStatusLine().getStatusCode() != 200) { | 
|   | 
|                 System.out.println("request url failed, http code=" + response.getStatusLine().getStatusCode() | 
|                                    + ", url=" + url); | 
|                 return null; | 
|             } | 
|             HttpEntity entity = response.getEntity(); | 
|             if (entity != null) { | 
|                 String resultStr = EntityUtils.toString(entity, "utf-8"); | 
|   | 
|                 JSONObject result = JSON.parseObject(resultStr); | 
|                 if (result.getInteger("errcode") == 0) { | 
|                     result.remove("errcode"); | 
|                     result.remove("errmsg"); | 
|                     return result; | 
|                 } else { | 
|                     System.out.println("request url=" + url + ",return value="); | 
|                     System.out.println(resultStr); | 
|                     int errCode = result.getInteger("errcode"); | 
|                     String errMsg = result.getString("errmsg"); | 
|                     throw new OApiException(errCode, errMsg); | 
|                 } | 
|             } | 
|         } catch (IOException e) { | 
|             System.out.println("request url=" + url + ", exception, msg=" + e.getMessage()); | 
|             e.printStackTrace(); | 
|         } finally { | 
|             if (response != null) try { | 
|                 response.close(); | 
|             } catch (IOException e) { | 
|                 e.printStackTrace(); | 
|             } | 
|         } | 
|   | 
|         return null; | 
|     } | 
|      | 
|      | 
|     public static JSONObject uploadMedia(String url, File file) throws OApiException { | 
|         HttpPost httpPost = new HttpPost(url); | 
|         CloseableHttpResponse response = null; | 
|         CloseableHttpClient httpClient = HttpClients.createDefault(); | 
|         RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build(); | 
|         httpPost.setConfig(requestConfig); | 
|   | 
|         HttpEntity requestEntity = MultipartEntityBuilder.create().addPart("media", | 
|                 new FileBody(file, ContentType.APPLICATION_OCTET_STREAM, file.getName())).build(); | 
|         httpPost.setEntity(requestEntity); | 
|   | 
|         try { | 
|             response = httpClient.execute(httpPost, new BasicHttpContext()); | 
|   | 
|             if (response.getStatusLine().getStatusCode() != 200) { | 
|   | 
|                 System.out.println("request url failed, http code=" + response.getStatusLine().getStatusCode() | 
|                                    + ", url=" + url); | 
|                 return null; | 
|             } | 
|             HttpEntity entity = response.getEntity(); | 
|             if (entity != null) { | 
|                 String resultStr = EntityUtils.toString(entity, "utf-8"); | 
|   | 
|                 JSONObject result = JSON.parseObject(resultStr); | 
|                 if (result.getInteger("errcode") == 0) { | 
|                     // 成功 | 
|                     result.remove("errcode"); | 
|                     result.remove("errmsg"); | 
|                     return result; | 
|                 } else { | 
|                     System.out.println("request url=" + url + ",return value="); | 
|                     System.out.println(resultStr); | 
|                     int errCode = result.getInteger("errcode"); | 
|                     String errMsg = result.getString("errmsg"); | 
|                     throw new OApiException(errCode, errMsg); | 
|                 } | 
|             } | 
|         } catch (IOException e) { | 
|             System.out.println("request url=" + url + ", exception, msg=" + e.getMessage()); | 
|             e.printStackTrace(); | 
|         } finally { | 
|             if (response != null) try { | 
|                 response.close(); | 
|             } catch (IOException e) { | 
|                 e.printStackTrace(); | 
|             } | 
|         } | 
|   | 
|         return null; | 
|     } | 
|      | 
|      | 
|     public static JSONObject downloadMedia(String url, String fileDir) throws OApiException { | 
|         HttpGet httpGet = new HttpGet(url); | 
|         CloseableHttpResponse response = null; | 
|         CloseableHttpClient httpClient = HttpClients.createDefault(); | 
|         RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build(); | 
|         httpGet.setConfig(requestConfig); | 
|   | 
|         try { | 
|             HttpContext localContext = new BasicHttpContext(); | 
|   | 
|             response = httpClient.execute(httpGet, localContext); | 
|   | 
|             RedirectLocations locations = (RedirectLocations) localContext.getAttribute(HttpClientContext.REDIRECT_LOCATIONS); | 
|             if (locations != null) { | 
|                 URI downloadUrl = locations.getAll().get(0); | 
|                 String filename = downloadUrl.toURL().getFile(); | 
|                 System.out.println("downloadUrl=" + downloadUrl); | 
|                 File downloadFile = new File(fileDir + File.separator + filename); | 
|                 FileUtils.writeByteArrayToFile(downloadFile, EntityUtils.toByteArray(response.getEntity())); | 
|                 JSONObject obj = new JSONObject(); | 
|                 obj.put("downloadFilePath", downloadFile.getAbsolutePath()); | 
|                 obj.put("httpcode", response.getStatusLine().getStatusCode()); | 
|                  | 
|                 | 
|                  | 
|                 return obj; | 
|             } else { | 
|                 if (response.getStatusLine().getStatusCode() != 200) { | 
|   | 
|                     System.out.println("request url failed, http code=" + response.getStatusLine().getStatusCode() | 
|                                        + ", url=" + url); | 
|                     return null; | 
|                 } | 
|                 HttpEntity entity = response.getEntity(); | 
|                 if (entity != null) { | 
|                     String resultStr = EntityUtils.toString(entity, "utf-8"); | 
|   | 
|                     JSONObject result = JSON.parseObject(resultStr); | 
|                     if (result.getInteger("errcode") == 0) { | 
|                         // 成功 | 
|                         result.remove("errcode"); | 
|                         result.remove("errmsg"); | 
|                         return result; | 
|                     } else { | 
|                         System.out.println("request url=" + url + ",return value="); | 
|                         System.out.println(resultStr); | 
|                         int errCode = result.getInteger("errcode"); | 
|                         String errMsg = result.getString("errmsg"); | 
|                         throw new OApiException(errCode, errMsg); | 
|                     } | 
|                 } | 
|             } | 
|         } catch (IOException e) { | 
|             System.out.println("request url=" + url + ", exception, msg=" + e.getMessage()); | 
|             e.printStackTrace(); | 
|         } finally { | 
|             if (response != null) try { | 
|                 response.close(); | 
|             } catch (IOException e) { | 
|                 e.printStackTrace(); | 
|             } | 
|         } | 
|   | 
|         return null; | 
|     } | 
| } |