httpシミュレーションpost get delete

8091 ワード

1.ImHttpDelete

import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;

import java.net.URI;

/**
 * Created by wuhao on 15-7-4.
 */
public class ImHttpDelete extends HttpEntityEnclosingRequestBase {
    public final static String METHOD_NAME = "DELETE";

    public ImHttpDelete() {
        super();
    }

    public ImHttpDelete(final URI uri) {
        super();
        setURI(uri);
    }

    /**
     * @throws IllegalArgumentException if the uri is invalid.
     */
    public ImHttpDelete(final String uri) {
        super();
        setURI(URI.create(uri));
    }

    @Override
    public String getMethod() {
        return METHOD_NAME;
    }
}

2.HttpHelper


import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;

/**
 * Http    
 *
 * Created by wuhao on 15-7-4.
 */
public class HttpHelper {
    /**
     *  HttpPost  
     *
     * @param requestUrl
     * @param requestHeaderMap
     * @param requestBody
     * @return
     * @throws IOException
     */
    public static HttpResponse httpPost(String requestUrl, Map<String, String> requestHeaderMap, String requestBody) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(requestUrl);
        if (requestHeaderMap != null) {
            for (String key : requestHeaderMap.keySet()) {
                httpPost.setHeader(key, requestHeaderMap.get(key));
            }
        }
        if (requestBody != null && requestBody.length() > 0) {
            byte[] content = requestBody.getBytes("utf-8");
            ByteArrayEntity entity = new ByteArrayEntity(content);
            httpPost.setEntity(entity);
        }

        return httpClient.execute(httpPost);
    }

    /**
     *   HttpPut  
     *
     *
     * @param requestUrl
     * @param requestHeaderMap
     * @param requestBody
     * @return
     * @throws IOException
     */
    public static HttpResponse httpPut(String requestUrl, Map<String, String> requestHeaderMap, String requestBody) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPut httpPut = new HttpPut(requestUrl);
        if (requestHeaderMap != null) {
            for (String key : requestHeaderMap.keySet()) {
                httpPut.setHeader(key, requestHeaderMap.get(key));
            }
        }
        if (requestBody != null && requestBody.length() > 0) {
            byte[] content = requestBody.getBytes("utf-8");
            ByteArrayEntity entity = new ByteArrayEntity(content);
            httpPut.setEntity(entity);
        }

        return httpClient.execute(httpPut);
    }

    /**
     *   HttpGet  
     *
     * @param requestUrl
     * @param requestHeaderMap
     * @return
     * @throws IOException
     */
    public static HttpResponse httpGet(String requestUrl, Map<String, String> requestHeaderMap) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet(requestUrl);
        if (requestHeaderMap != null) {
            for (String key : requestHeaderMap.keySet()) {
                httpGet.setHeader(key, requestHeaderMap.get(key));
            }
        }

        return httpClient.execute(httpGet);
    }

    /**
     *   HttpDelete  
     *
     * @param requestUrl
     * @param requestHeaderMap
     * @return
     * @throws IOException
     */
    public static HttpResponse httpDelete(String requestUrl, Map<String, String> requestHeaderMap, String requestBody) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        ImHttpDelete imHttpDelete = new ImHttpDelete(requestUrl);
        if (requestHeaderMap != null) {
            for (String key : requestHeaderMap.keySet()) {
                imHttpDelete.setHeader(key, requestHeaderMap.get(key));
            }
        }
        if (requestBody != null && requestBody.length() > 0) {
            byte[] content = requestBody.getBytes("utf-8");
            ByteArrayEntity entity = new ByteArrayEntity(content);
            imHttpDelete.setEntity(entity);
        }

        return httpClient.execute(imHttpDelete);
    }

    /**
     *   request body 
     *
     * @param request
     * @return
     * @throws IOException
     */
    public static byte[] getRequestBody(HttpServletRequest request) throws IOException {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        int contentLength = request.getContentLength();
        if (contentLength > 0) {
            int sum = 0;
            byte[] buffer = new byte[contentLength];
            while (sum < contentLength) {
                int count = request.getInputStream().read(buffer);
                if (count > 0) {
                    outputStream.write(buffer, 0, count);
                    sum += count;
                } else if (count < 0) {
                    outputStream.close();
                    throw new IOException(String.format("getRequestBody read return %s. contentLength:%s sum:%s ",
                            count, contentLength, sum));
                }
            }
        }

        outputStream.flush();
        byte[] outputBuffer = outputStream.toByteArray();
        outputStream.close();
        return outputBuffer;
    }

    /**
     *   request body 
     *
     * @param request
     * @return
     * @throws IOException
     */
    public static String getRequestString(HttpServletRequest request, String body) {
        StringBuilder sb = new StringBuilder();
        sb.append(String.format("%s %s %s
", request.getMethod(), request.getRequestURI(), request.getProtocol())); for (Enumeration<String> e = request.getHeaderNames(); e.hasMoreElements(); ) { String headName = e.nextElement(); String headValue = request.getHeader(headName); sb.append(String.format("%s: %s
", headName, headValue)); } if (body != null && body.length() > 0) { sb.append("
"); sb.append(body); } return sb.toString(); } /** * request body * * @param request * @return */ public static String getRequestString(HttpServletRequest request) { return getRequestString(request, null); } }