가 져 오 는 데 사용 할 httputil 도구 클래스

17884 단어 개발 중인 문제
작업 중 에 httpclien 으로 데 이 터 를 크로스 시스템 으로 전송 하 는 것 을 피 할 수 없습니다. 요 며칠 동안 계속 사용 하고 있 습 니 다. 다른 시스템 의 인 터 페 이 스 를 조정 하고 있 습 니 다. 오늘 은 제 가 사용 하 는 도구 류 를 공유 하 겠 습 니 다. 주로 후기 에 제 가 사용 할 때 찾 을 수 있 습 니 다.
package com.cnlive.shenhe.utils;

import com.alibaba.fastjson.JSONObject;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.config.RequestConfig.Builder;
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.client.methods.HttpUriRequest;
import org.apache.http.client.utils.URIBuilder;
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.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.charset.UnsupportedCharsetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

/**
 * http     
 *
 * @author liujiong
 */
public class HttpUtil {

    private Logger logger = LoggerFactory.getLogger(HttpUtil.class);

    private static PoolingHttpClientConnectionManager pcm;//httpclient   
    private CloseableHttpClient httpClient = null; //http  
    private int connectTimeout = 120000;//      
    private int connectionRequestTimeout = 10000;//            
    private int socketTimeout = 300000;//        
    private String charset = "utf-8";
    private RequestConfig requestConfig = null;//    
    private Builder requestConfigBuilder = null;//build requestConfig

    private List nvps = new ArrayList<>();
    private List
headers = new ArrayList<>(); private String requestParam = ""; static { pcm = new PoolingHttpClientConnectionManager(); pcm.setMaxTotal(50);// pcm.setDefaultMaxPerRoute(50);// , 2 } /** * * * @author Liu Jiong * @createDate 2016 10 30 */ private static HttpUtil defaultInit() { HttpUtil httpUtil = new HttpUtil(); if (httpUtil.requestConfig == null) { httpUtil.requestConfigBuilder = RequestConfig.custom().setConnectTimeout(httpUtil.connectTimeout) .setConnectionRequestTimeout(httpUtil.connectionRequestTimeout) .setSocketTimeout(httpUtil.socketTimeout); httpUtil.requestConfig = httpUtil.requestConfigBuilder.build(); } return httpUtil; } /** * httpUtil */ public static HttpUtil init() { HttpUtil httpUtil = defaultInit(); if (httpUtil.httpClient == null) { httpUtil.httpClient = HttpClients.custom().setConnectionManager(pcm).build(); } return httpUtil; } /** * httpUtil */ public static HttpUtil init(Map paramMap) { HttpUtil httpUtil = init(); httpUtil.setParamMap(paramMap); return httpUtil; } /** * */ public static HttpUtil initWithAuth(String ip, int port, String username, String password) { HttpUtil httpUtil = defaultInit(); if (httpUtil.httpClient == null) { CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(new AuthScope(ip, port, AuthScope.ANY_REALM), new UsernamePasswordCredentials(username, password)); httpUtil.httpClient = HttpClients.custom().setDefaultCredentialsProvider(credentialsProvider) .setConnectionManager(pcm).build(); } return httpUtil; } /** * */ public HttpUtil setHeader(String name, String value) { Header header = new BasicHeader(name, value); headers.add(header); return this; } /** * */ public HttpUtil setHeaderMap(Map headerMap) { for (Entry param : headerMap.entrySet()) { Header header = new BasicHeader(param.getKey(), param.getValue()); headers.add(header); } return this; } /** * */ public HttpUtil setParam(String name, String value) { nvps.add(new BasicNameValuePair(name, value)); return this; } /** * */ public HttpUtil setParamMap(Map paramMap) { for (Entry param : paramMap.entrySet()) { nvps.add(new BasicNameValuePair(param.getKey(), param.getValue())); } return this; } /** * */ public HttpUtil setStringParam(String requestParam) { this.requestParam = requestParam; return this; } /** * */ public HttpUtil setConnectTimeout(int connectTimeout) { this.connectTimeout = connectTimeout; this.requestConfigBuilder = requestConfigBuilder.setConnectTimeout(connectTimeout); requestConfig = requestConfigBuilder.build(); return this; } /** * http get */ public Map get(String url) { Map resultMap = new HashMap<>(); // URI URI uri = getUri(url); if (uri != null) { HttpGet httpGet = new HttpGet(uri); httpGet.setConfig(requestConfig); if (!CollectionUtils.isEmpty(headers)) { Header[] header = new Header[headers.size()]; httpGet.setHeaders(headers.toArray(header)); } // get try { CloseableHttpResponse response = httpClient.execute(httpGet); return getHttpResult(response, url, httpGet, resultMap); } catch (Exception e) { httpGet.abort(); resultMap.put("result", e.getMessage()); logger.error(" http GET url======" + url, e); } } return resultMap; } /** * http post */ public Map post(String url) { HttpPost httpPost = new HttpPost(url); httpPost.setConfig(requestConfig); if (!CollectionUtils.isEmpty(headers)) { Header[] header = new Header[headers.size()]; httpPost.setHeaders(headers.toArray(header)); } if (!CollectionUtils.isEmpty(nvps)) { try { httpPost.setEntity(new UrlEncodedFormEntity(nvps, charset)); } catch (UnsupportedEncodingException e) { logger.error("http post entity form error", e); } } if (!StringUtils.isEmpty(requestParam)) { try { httpPost.setEntity(new StringEntity(requestParam, charset)); } catch (UnsupportedCharsetException e) { logger.error("http post entity form error", e); } } Map resultMap = new HashMap<>(); // post try { CloseableHttpResponse response = httpClient.execute(httpPost); return getHttpResult(response, url, httpPost, resultMap); } catch (Exception e) { httpPost.abort(); resultMap.put("result", e.getMessage()); logger.error(" http POST url======" + url, e); } return resultMap; } /** * post */ public Map postUploadFile(String url, Map fileParam) { HttpPost httpPost = new HttpPost(url); httpPost.setConfig(requestConfig); if (!CollectionUtils.isEmpty(headers)) { Header[] header = new Header[headers.size()]; httpPost.setHeaders(headers.toArray(header)); } MultipartEntityBuilder builder = MultipartEntityBuilder.create(); if (fileParam != null) { for (Entry entry : fileParam.entrySet()) { // FileBody fileBody = new FileBody(entry.getValue()); // builder.addPart(entry.getKey(), fileBody); } } if (!CollectionUtils.isEmpty(nvps)) { for (NameValuePair nvp : nvps) { String value = nvp.getValue(); if (!StringUtils.isEmpty(value)) { builder.addTextBody(nvp.getName(), value, ContentType.create("text/plain", charset)); } } } httpPost.setEntity(builder.build()); Map resultMap = new HashMap<>(); // post try { CloseableHttpResponse response = httpClient.execute(httpPost); return getHttpResult(response, url, httpPost, resultMap); } catch (Exception e) { httpPost.abort(); resultMap.put("result", e.getMessage()); logger.error(" http postUploadFile url======" + url, e); } return resultMap; } /** * */ private Map getHttpResult(CloseableHttpResponse response, String url, HttpUriRequest request, Map resultMap) { String result = ""; int statusCode = response.getStatusLine().getStatusCode(); resultMap.put("statusCode", statusCode + ""); HttpEntity entity = response.getEntity(); if (entity != null) { try { result = EntityUtils.toString(entity, charset); EntityUtils.consume(entity);// } catch (Exception e) { logger.error(" http ", e); request.abort(); } } if (statusCode != 200) { result = "HttpClient status code :" + statusCode + " request url===" + url; logger.info("HttpClient status code :" + statusCode + " request url===" + url); request.abort(); } resultMap.put("result", result); return resultMap; } /** * url location */ public String redirectLocation(String url) { String location = ""; // URI URI uri = getUri(url); if (uri != null) { HttpGet httpGet = new HttpGet(uri); requestConfig = requestConfigBuilder.setRedirectsEnabled(false).build();// false httpGet.setConfig(requestConfig); if (!CollectionUtils.isEmpty(headers)) { Header[] header = new Header[headers.size()]; httpGet.setHeaders(headers.toArray(header)); } try { // get CloseableHttpResponse response = httpClient.execute(httpGet); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {//301 302 Header header = response.getFirstHeader("Location"); if (header != null) { location = header.getValue(); } } HttpEntity entity = response.getEntity(); if (entity != null) { EntityUtils.consume(entity); } } catch (Exception e) { logger.error(" http GET 302 Location url======" + url, e); httpGet.abort(); } } return location; } /** * */ public InputStream getInputStream(String url) { // URI URI uri = getUri(url); if (uri != null) { HttpGet httpGet = new HttpGet(uri); httpGet.setConfig(requestConfig); if (!CollectionUtils.isEmpty(headers)) { Header[] header = new Header[headers.size()]; httpGet.setHeaders(headers.toArray(header)); } // get try { CloseableHttpResponse response = httpClient.execute(httpGet); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != 200) { logger.info("HttpClient status code :" + statusCode + " request url===" + url); httpGet.abort(); } else { HttpEntity entity = response.getEntity(); if (entity != null) { InputStream in = entity.getContent(); return in; } } } catch (Exception e) { logger.error(" http GET inputStream url======" + url, e); httpGet.abort(); } } return null; } private URI getUri(String url) { URI uri = null; try { URIBuilder uriBuilder = new URIBuilder(url); if (!CollectionUtils.isEmpty(nvps)) { uriBuilder.setParameters(nvps); } uri = uriBuilder.build(); } catch (URISyntaxException e) { logger.error("url ", e); } return uri; } /** * from * @param url * @param params * @return */ public static String form(String url, Map params) { URL u = null; HttpURLConnection con = null; // StringBuffer sb = new StringBuffer(); if (params != null) { for (Entry e : params.entrySet()) { sb.append(e.getKey()); sb.append("="); sb.append(e.getValue()); sb.append("&"); } sb.substring(0, sb.length() - 1); } // try { u = new URL(url); con = (HttpURLConnection) u.openConnection(); //// POST , ,post con.setRequestMethod("POST"); con.setDoOutput(true); con.setDoInput(true); con.setUseCaches(false); con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream(), "UTF-8"); osw.write(sb.toString()); osw.flush(); osw.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (con != null) { con.disconnect(); } } // StringBuffer buffer = new StringBuffer(); try { // , server 。 BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8")); String temp; while ((temp = br.readLine()) != null) { buffer.append(temp); buffer.append("
"); } } catch (Exception e) { e.printStackTrace(); } return buffer.toString(); } public static void main(String[] args) { /*Map map = new HashMap<>(); JSONObject param = new JSONObject(); param.put("activity_id","60:video:comets:10011#2"); param.put("state",3); param.put("attr_tags",""); param.put("msg",""); map.put("param",param.toJSONString()); String form = form("http://yp5ntd.natappfree.cc/CnInteraction/services/commentForHd/auditCallBackNew", map); System.out.println(form);*/ JSONObject params = new JSONObject(); params.put("video_id","60_8be004799c424688949704814ea0d16d"); params.put("state",3+""); params.put("attr_tags",""); params.put("msg",""); HttpUtil httpUtil = HttpUtil.init(); httpUtil.setParam("param",params.toJSONString()); String URL ="http://abcd.com/v1/ShenHeInfo/shenheNotify?platform=AUDIT&token=94cead75c"; Map post = httpUtil.post(URL); System.out.println(post.get("result")); } }

좋은 웹페이지 즐겨찾기