导入pom文件
org.apache.httpcomponents
httpclient
4.4.1
org.apache.httpcomponents
httpcore
4.4.1
com.facebook.presto
presto-jdbc
0.152
开始发送请求
package com.example.demo.config;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
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.methods.RequestBuilder;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.parser.Feature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.facebook.presto.jdbc.internal.guava.collect.Maps;
@SuppressWarnings("deprecation")
public class HttpUtils {
private static final Logger log= LoggerFactory.getLogger(HttpUtils.class);
public static String httpGetTool(List nvps, String urlPath, Map headerMap) {
System.out.println(nvps + " " + urlPath + " " + headerMap);
//HttpEntity entity = new UrlEncodedFormEntity(pairs,HTTP.UTF_8);
long stime = System.currentTimeMillis();
HttpClient http = new DefaultHttpClient();
http.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,3600000);//连接时间
http.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,3600000);//数据传输时间
StringBuilder url = new StringBuilder(urlPath);
StringBuffer sb = new StringBuffer();
if (null != nvps && nvps.size() > 0) {
url.append("?");
for (int i = 0; i < nvps.size(); i++) {
try {
String value = nvps.get(i).getValue();
if (value != null) {
url.append(nvps.get(i).getName()).append("=").append(URLEncoder.encode(value, "utf-8"))
.append("&");
}
} catch (UnsupportedEncodingException e) {
log.error("{}", e);
}
}
if (url.toString().endsWith("&")) {
url.deleteCharAt(url.lastIndexOf("&"));
}
}
HttpGet httpget = new HttpGet(url.toString());
try {
setHeader(httpget, headerMap);
HttpResponse response = http.execute(httpget);
HttpEntity entity = response.getEntity();
// 显示结果
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "utf-8"));
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
if (reader != null) {
reader.close();
}
} catch (UnsupportedEncodingException e) {
httpget.abort();
log.error("{}", e);
} catch (ClientProtocolException e) {
httpget.abort();
log.error("{}", e);
} catch (IOException e) {
httpget.abort();
log.error("{}", e);
} finally {
//log.info("|" + (System.currentTimeMillis() - stime) + ":ms|" + url.toString() + "|" + sb.toString());
}
return sb.toString();
}
public static JSONObject httpPostTool(List nvps, String urlPath, Map headerMap, int connection_timeout, int so_timeout) {
long stime = System.currentTimeMillis();
HttpClient http = new DefaultHttpClient();
http.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, connection_timeout);//连接时间
http.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, so_timeout);//数据传输时间
HttpPost httpPost = new HttpPost(urlPath);
UrlEncodedFormEntity entityform;
StringBuffer sb = new StringBuffer();
String tmpParam = "";
boolean f = false;
try {
entityform = new UrlEncodedFormEntity(nvps, HTTP.UTF_8);
tmpParam = EntityUtils.toString(entityform);
setHeader(httpPost, headerMap);
httpPost.setEntity(entityform);
HttpResponse response = http.execute(httpPost);
long executetime = System.currentTimeMillis() - stime;
if(executetime >= connection_timeout){
f = true;
}
HttpEntity entity = response.getEntity();
// 显示结果
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
if (reader != null) {
reader.close();
}
} catch(Exception e) {
log.error(urlPath,e);
} finally {
log.info("|" + (System.currentTimeMillis() - stime) + ":ms|" + urlPath + "|"
);
}
LinkedHashMap root = Maps.newLinkedHashMap();
try {
if (sb != null) {
root = JSONObject.parseObject(sb.toString(),new TypeReference>(){}, Feature.OrderedField);
}
} catch (Exception e) {
log.error(e.getMessage(), e);
log.error(sb.toString());
}
JSONObject jsonObject = new JSONObject(root);
if(jsonObject != null && f){
jsonObject.put("timeout", 1);
}/* else if(jsonObject == null){
jsonObject = new JSONObject();
}*/
return jsonObject;
}
public static String httpPostTool(List nvps, String urlPath, Map headerMap) {
long stime = System.currentTimeMillis();
HttpClient http = new DefaultHttpClient();
http.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3600000);//连接时间
http.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 3600000);//数据传输时间
HttpPost httpPost = new HttpPost(urlPath);
UrlEncodedFormEntity entityform;
StringBuffer sb = new StringBuffer();
String tmpParam = "";
try {
entityform = new UrlEncodedFormEntity(nvps, HTTP.UTF_8);
tmpParam = EntityUtils.toString(entityform);
setHeader(httpPost, headerMap);
httpPost.setEntity(entityform);
HttpResponse response = http.execute(httpPost);
HttpEntity entity = response.getEntity();
// 显示结果
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
if (reader != null) {
reader.close();
}
} catch(Exception e) {
log.error(urlPath,e);
} finally {
log.info("|" + (System.currentTimeMillis() - stime) + ":ms|" + urlPath + "|"
);
}
return sb.toString();
}
public static String httpPostTool(Map nvps, String urlPath, Map headerMap) {
long stime = System.currentTimeMillis();
HttpClient http = new DefaultHttpClient();
http.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3600000);//连接时间
http.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 3600000);//数据传输时间
HttpPost httpPost = new HttpPost(urlPath);
UrlEncodedFormEntity entityform;
StringBuffer sb = new StringBuffer();
try {
List params = bulidParams(nvps);
entityform = new UrlEncodedFormEntity(params, HTTP.UTF_8);
setHeader(httpPost, headerMap);
httpPost.setEntity(entityform);
HttpResponse response = http.execute(httpPost);
HttpEntity entity = response.getEntity();
// 显示结果
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
if (reader != null) {
reader.close();
}
} catch(Exception e) {
log.error(urlPath,e);
} finally {
log.info("|" + (System.currentTimeMillis() - stime) + ":ms|" + urlPath + "|"
);
}
return sb.toString();
}
public static void setHeader(HttpGet httpGet, Map headerMap) {
if (headerMap != null) {
Iterator iter = headerMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
String key = (String) entry.getKey();
String val = (String) entry.getValue();
httpGet.setHeader(key, val);
}
}
}
private static void setHeader(HttpPost httpPost, Map headerMap) {
if (headerMap != null) {
Iterator iter = headerMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
String key = (String) entry.getKey();
String val = null;
if (entry.getValue() != null) {
val = String.valueOf(entry.getValue());
httpPost.setHeader(key, val);
}
}
}
}
public static HttpUriRequest getHttpGetRequest(String url, Map headers) {
RequestBuilder requestBuilder = RequestBuilder.get().setUri(url);
if (headers != null) {
for (Map.Entry headerEntry : headers.entrySet()) {
requestBuilder.addHeader(headerEntry.getKey(), headerEntry.getValue());
}
}
RequestConfig.Builder requestConfigBuilder = RequestConfig.custom()
.setConnectionRequestTimeout(20 * 1000).setSocketTimeout(20 * 1000)
.setConnectTimeout(20 * 1000).setCookieSpec(CookieSpecs.BEST_MATCH);
requestBuilder.setConfig(requestConfigBuilder.build());
return requestBuilder.build();
}
private static List bulidParams(Map map) throws UnsupportedEncodingException {
List params = new ArrayList();
for(Entry entry : map.entrySet()) {
params.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
return params;
}
}
结果数据测试
List pairs = new ArrayList();
pairs.add(new BasicNameValuePair("sql",sql));
pairs.add(new BasicNameValuePair("type","1"));
pairs.add(new BasicNameValuePair("appid","admin_test"));
pairs.add(new BasicNameValuePair("schema",schema));
pairs.add(new BasicNameValuePair("catalog","hive"));
pairs.add(new BasicNameValuePair("isQuaryAll","true"));
Map maps = new HashMap<>();
maps.put("Content-Type", "application/x-www-form-urlencoded");
JSONObject jsonObject = HttpUtils.httpPostTool(pairs, url, maps, 30 * 30 * 1000, 30 * 30 * 1000);
return jsonObject;