package com.xiongyingqi.http; import com.xiongyingqi.util.FileHelper; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.entity.ContentType; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; /** * Created by 瑛琪<a href="http://xiongyingqi.com">xiongyingqi.com</a> on 2014/5/4 0004. */ public class HttpAccess { public static Charset defaultCharset = Charset.forName("UTF-8"); public static CloseableHttpClient getClient() { HttpClientBuilder client = HttpClientBuilder.create(); CloseableHttpClient closeableHttpClient = client.build(); return closeableHttpClient; } public static String execute(CloseableHttpClient closeableHttpClient, HttpRequestBase requestBase) throws IOException { CloseableHttpResponse response = closeableHttpClient.execute(requestBase); return readResponseToString(response); } public static InputStream executeAndGetInputStream(CloseableHttpClient closeableHttpClient, HttpRequestBase requestBase) throws IOException { CloseableHttpResponse response = closeableHttpClient.execute(requestBase); return readResponse(response); } public static InputStream readResponse(CloseableHttpResponse response) throws IOException { HttpEntity entity = response.getEntity(); InputStream inputStream = entity.getContent(); // String result = FileHelper.readInputStreamToString(inputStream, charset); // result = URLDecoder.decode(result, charset.toString()); return inputStream; } public static String readResponseToString(CloseableHttpResponse response) throws IOException { HttpEntity entity = response.getEntity(); ContentType contentType = ContentType.getOrDefault(entity);// 获取编码 Charset charset = contentType.getCharset(); if (charset == null) { charset = defaultCharset; } InputStream inputStream = entity.getContent(); String result = FileHelper.readInputStreamToString(inputStream, charset); // result = URLDecoder.decode(result, charset.toString()); return result; } }