在java操作es时,可以使用HTTP请求的方式来连接es,一般es是没有密码限制的。但当es设置了用户名密码限制的时候我们需要在HTTP请求中携带用户名和密码,如何在HTTP请求中携带用户名密码,直接上代码
public class HttpUtils {
public static String sendPost(String url, String param) {
OutputStreamWriter out = null;
BufferedReader in = null;
String result = "";
//用户名密码
String input = "username"+":"+"password";
try {
BASE64Encoder base = new BASE64Encoder();
String encodedPassword = base.encode(input.getBytes("UTF-8"));
URL realUrl = new URL(url);
// 打开和URL之间的连接
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
conn.setConnectTimeout(30000);//设置连接主机超时(单位:毫秒)
conn.setReadTimeout(30000);//设置从主机读取数据超时(单位:毫秒)
// 设置通用的请求属性
conn.setRequestProperty("Authorization", "Basic "+encodedPassword);
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new OutputStreamWriter(conn.getOutputStream(),"utf-8");
// 发送请求参数
out.write(param);
// flush输出流的缓冲
out.flush();
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream inputStream = conn.getInputStream();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(inputStream,"utf-8"));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
}else{
InputStream errorStream = conn.getErrorStream();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(errorStream,"utf-8"));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
log.error("响应失败:"+conn.getResponseCode()+",响应信息"+conn.getResponseMessage()+",返回信息:"+result);
}
}catch (Exception e) {
log.error("发送 POST 请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOException ex){
log.error("关闭流异常"+ex);
ex.printStackTrace();
}
}
return result;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)