import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
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.RequestBuilder;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.conn.ssl.X509HostnameVerifier;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.ByteArrayBuffer;
import org.apache.http.util.EntityUtils;
/**
* 封装了一些采用HttpClient发送HTTP请求的方法
*
* @see 本工具所采用的是最新的HttpComponents-Client-4.2.1
*/
public class HttpClientUtils {
private static Log logger = LogFactory.getLog(HttpClientUtils.class);
/**
* 设置请求头和参数 post提交
*
* @param urlStr
* 地址
* @param headMap
* 请求头
* @param paramMap
* 内容参数
* @return
*/
public static String connectPost(String urlStr, Map<String, String> headMap, Map<String, String> paramMap) {
logger.info("========设置请求头和参数并以 post提交=======");
URL url;
String sCurrentLine = "";
String sTotalString = "";
DataOutputStream out = null;
try {
url = new URL(urlStr);
logger.info("请求地址:" + urlStr);
URLConnection URLconnection = url.openConnection();
HttpURLConnection httpConnection = (HttpURLConnection) URLconnection;
// httpConnection.setRequestProperty("Content-type", "application/json");
httpConnection.setRequestProperty("Accept-Charset", "utf-8");
httpConnection.setRequestProperty("contentType", "utf-8");
if (headMap != null && !headMap.isEmpty()) {
for (String key : headMap.keySet()) {
logger.info("头部信息key:" + key + "===值: " + headMap.get(key));
httpConnection.setRequestProperty(key, headMap.get(key));
}
}
httpConnection.setRequestMethod("POST");
httpConnection.setDoOutput(true);
httpConnection.setDoInput(true);
StringBuffer params = new StringBuffer();
// 表单参数与get形式一样
if (paramMap != null && !paramMap.isEmpty()) {
for (String key : paramMap.keySet()) {
if (params.length() > 1) {
params.append("&");
}
params.append(key).append("=").append(paramMap.get(key).trim());
}
logger.info("请求参数: " + params.toString());
}
//System.out.println("params = " + params.toString());
out = new DataOutputStream(httpConnection.getOutputStream());
// 发送请求参数
if (params!=null) {
out.writeBytes(params.toString());
}
// flush输出流的缓冲
out.flush();
// int responseCode = httpConnection.getResponseCode();
// if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream urlStream = httpConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlStream));
while ((sCurrentLine = bufferedReader.readLine()) != null) {
sTotalString += sCurrentLine;
}
// //System.out.println(sTotalString);
// 假设该url页面输出为"OK"
// }else{
// System.err.println("FIAL");
// }
} catch (Exception e) {
logger.info("请求错误: " + e.getMessage());
logger.error("系统错误:",e);
} finally {
}
logger.info("响应信息: " + sTotalString);
return sTotalString;
}
public static void test() throws Exception{
String url = "http://******/api/hdfs/proxy/create?username=******&password=*****&uri=/test/test-xx.txt";
byte[] bytes = "1".getBytes();
HttpClient client = HttpClients.createDefault();
RequestBuilder requestBuilder = RequestBuilder.post();
requestBuilder.setEntity(new ByteArrayEntity(bytes));
requestBuilder.setUri(url);
HttpResponse response = client.execute(requestBuilder.build());
HttpEntity entity = response.getEntity();
//获得响应流
InputStream is = entity.getContent();
//读取流中内容
ByteArrayBuffer buffer = new ByteArrayBuffer(4096);
HttpClient工具类(包含请求头设置及请求示例)
最新推荐文章于 2022-11-25 12:08:46 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)