zoukankan      html  css  js  c++  java
  • HttpUtil

    package com.eaju.util;


    import java.io.IOException;
    import java.net.URLEncoder;
    import java.nio.charset.Charset;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;

    import org.apache.http.NameValuePair;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpDelete;
    import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPatch;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.methods.HttpPut;
    import org.apache.http.client.methods.RequestBuilder;
    import org.apache.http.entity.ByteArrayEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    import org.springframework.http.HttpMethod;
    public class HttpUtil {
    public final static String APPLICATION_PROTOBUF = "application/x-protobuf;charset=UTF-8";
    public final static String APPLICATION_JSON="application/json;charset=UTF-8";
    public final static String APPLICATION_XML="application/xml;charset=UTF-8";
    public final static String TEXT_PLAIN="text/plain;charset=UTF-8";

    /**
    *
    * @param url
    * @param params
    * @param accept
    * @return
    * @throws IOException
    */
    public static byte[] get(String url,Map<String,String> params,String accept) throws IOException{
    CloseableHttpClient httpclient = HttpClients.createDefault();
    if(params != null){
    StringBuilder paramUrl = new StringBuilder();
    for(String key:params.keySet()){
    paramUrl.append(URLEncoder.encode(key,"UTF-8")).
    append("=").
    append(URLEncoder.encode(params.get(key),"UTF-8")).
    append("&");
    }
    url+=url+"?"+paramUrl.substring(0,paramUrl.length()-1);
    }
    HttpGet httpGet =new HttpGet(url);
    httpGet.setHeader("Accept", accept);
    CloseableHttpResponse response =httpclient.execute(httpGet);
    byte[] result = EntityUtils.toByteArray(response.getEntity());
    response.close();
    httpclient.close();
    return result;

    }

    /**
    *
    * @param url
    * @param accept
    * @return
    * @throws IOException
    */
    public static byte[] get(String url,String accept) throws IOException{
    return get(url,null,accept);
    }

    /**
    *
    * @param url
    * @param params
    * @param accept
    * @return
    * @throws IOException
    */
    public static byte[] post(String url,Map<String,String> params,String accept)throws IOException{
    return execute(url,HttpMethod.POST,params,accept);
    }

    /**
    *
    * @param url
    * @param params
    * @param accept
    * @return
    * @throws IOException
    */
    public static byte[] patch(String url,Map<String,String> params,String accept)throws IOException{
    return execute(url,HttpMethod.PATCH,params,accept);
    }

    /**
    *
    * @param url
    * @param params
    * @param accept
    * @return
    * @throws IOException
    */
    public static byte[] put(String url,Map<String,String> params,String accept)throws IOException{
    return execute(url,HttpMethod.PUT,params,accept);
    }

    /**
    *
    * @param url
    * @param data
    * @param contentType
    * @param accept
    * @return
    * @throws IOException
    */
    public static byte[] post(String url,byte [] data,String contentType,String accept)throws IOException{
    return execute(url,HttpMethod.POST,data,contentType,accept);
    }

    /**
    *
    * @param url
    * @param data
    * @param contentType
    * @param accept
    * @return
    * @throws IOException
    */
    public static byte[] put(String url,byte [] data,String contentType,String accept)throws IOException{
    return execute(url,HttpMethod.PUT,data,contentType,accept);
    }

    /**
    *
    * @param url
    * @param data
    * @param contentType
    * @param accept
    * @return
    * @throws IOException
    */
    public static byte[] patch(String url,byte [] data,String contentType,String accept)throws IOException{
    return execute(url,HttpMethod.PATCH,data,contentType,accept);
    }

    /**
    *
    * @param url
    * @param accept
    * @return
    * @throws IOException
    */
    public static byte[] delete(String url,String accept)throws IOException{
    CloseableHttpClient httpclient = HttpClients.createDefault();
    HttpDelete httpDelete = new HttpDelete(url);
    httpDelete.setHeader("Accept", accept);
    CloseableHttpResponse response =httpclient.execute(httpDelete);
    byte[] result =EntityUtils.toByteArray(response.getEntity());
    response.close();
    httpclient.close();
    return result;
    }

    /**
    *
    * @param url
    * @param method
    * @param params
    * @param accept
    * @return
    * @throws IOException
    */
    private static byte[] execute(String url,HttpMethod method,Map<String,String> params,String accept)throws IOException{
    CloseableHttpClient httpclient = HttpClients.createDefault();
    RequestBuilder requestBuilder;
    switch (method){
    case POST:
    requestBuilder = RequestBuilder.post(url);
    if(params != null){
    List<NameValuePair> nvps = new ArrayList <NameValuePair>();
    for(String key:params.keySet()){
    nvps.add(new BasicNameValuePair(key, params.get(key)));
    }
    UrlEncodedFormEntity encodedFormEntity= new UrlEncodedFormEntity(nvps,Charset.forName("UTF-8"));
    requestBuilder.setEntity(encodedFormEntity);
    }
    break;
    case PUT:
    if(params != null){
    for(String key:params.keySet()){
    url+="&"+URLEncoder.encode(key,"UTF-8")+"="+ URLEncoder.encode(params.get(key),"UTF-8");
    }
    url=url.replaceFirst("&","?");
    }
    System.out.println(url);
    requestBuilder = RequestBuilder.put(url);
    break;
    case PATCH:
    requestBuilder = RequestBuilder.patch(url);
    requestBuilder.setHeader("Accept", accept);
    requestBuilder.setCharset(Charset.forName("UTF-8"));
    if(params != null){
    for(String key:params.keySet()){
    requestBuilder.addParameter(new BasicNameValuePair(key, params.get(key)));
    }
    }
    break;
    default:
    requestBuilder = RequestBuilder.post(url);
    if(params != null){
    List<NameValuePair> nvps = new ArrayList <NameValuePair>();
    for(String key:params.keySet()){
    nvps.add(new BasicNameValuePair(key, params.get(key)));
    }
    UrlEncodedFormEntity encodedFormEntity= new UrlEncodedFormEntity(nvps,Charset.forName("UTF-8"));
    requestBuilder.setEntity(encodedFormEntity);
    }
    break;
    }

    CloseableHttpResponse response =httpclient.execute(requestBuilder.build());
    byte[] result =EntityUtils.toByteArray(response.getEntity());
    response.close();
    httpclient.close();
    return result;
    }

    /**
    *
    * @param url
    * @param method
    * @param data
    * @param contentType
    * @param accept
    * @return
    * @throws IOException
    */
    private static byte[] execute(String url,HttpMethod method,byte [] data,String contentType,String accept)throws IOException{
    CloseableHttpClient httpclient = HttpClients.createDefault();
    HttpEntityEnclosingRequestBase httpRequest;
    switch (method){
    case POST:
    httpRequest = new HttpPost(url);
    break;
    case PUT:
    httpRequest = new HttpPut(url);
    break;
    case PATCH:
    httpRequest = new HttpPatch(url);
    break;
    default:
    httpRequest = new HttpPost(url);
    }
    httpRequest.setHeader("Content-Type", contentType);
    httpRequest.setHeader("Accept", accept);
    if(data != null){
    httpRequest.setEntity(new ByteArrayEntity(data));
    }
    CloseableHttpResponse response =httpclient.execute(httpRequest);
    byte[] result =EntityUtils.toByteArray(response.getEntity());
    response.close();
    httpclient.close();
    return result;
    }

    }

  • 相关阅读:
    SPOJ 694 (后缀数组) Distinct Substrings
    POJ 2774 (后缀数组 最长公共字串) Long Long Message
    POJ 3693 (后缀数组) Maximum repetition substring
    POJ 3261 (后缀数组 二分) Milk Patterns
    UVa 1149 (贪心) Bin Packing
    UVa 12206 (字符串哈希) Stammering Aliens
    UVa 11210 (DFS) Chinese Mahjong
    UVa (BFS) The Monocycle
    UVa 11624 (BFS) Fire!
    HDU 3032 (Nim博弈变形) Nim or not Nim?
  • 原文地址:https://www.cnblogs.com/21heshang/p/6010613.html
Copyright © 2011-2022 走看看