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; 
 | 
    } 
 | 
} 
 |