public static String okHttpPost(String url,String paramJsonString){
try{
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json; charset=UTF-8");
RequestBody body = RequestBody.create(mediaType, paramJsonString);
Request request = new Request.Builder()
.url(url)
.method("POST", body)
.addHeader("Accept", "application/json")
.addHeader("Content-type", "application/json")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.build();
Response response = client.newCall(request).execute();
return response.body().string();
} catch (Exception e){
e.printStackTrace();
}
return null;
}
public static String erkHttp(String uri,String password,String queryData){
try{
//URL url = new URL("http://121.62.60.60:9200/sample/_search?filter_path=**.hits._source.message");
URL url = new URL(uri);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Content-Type", "application/json");
//byte[] message = ("elastic:8881130py").getBytes("UTF-8");
byte[] message = ("elastic:"+password).getBytes("UTF-8");
String basicAuth = DatatypeConverter.printBase64Binary(message);
httpConn.setRequestProperty("Authorization", "Basic " + basicAuth);
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
//writer.write("{ \"query\": { \"match\": {\"decode_data.domain\": \"test.com\"} }}");
writer.write(queryData);
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
return response;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
public static String erkHttpS(String uri,String password,String queryData){
// Load Certificate
// curl --cacert /etc/elasticsearch/certstp_ca.crt -u elastic:Omg3GxT=MGMkkWLa-+sd https://localhost:9200/sample/_search -d'{ "query": { "match": {"decode_data.domain": "test.com"} }}'
String result="";
try {
//请求超时时间,这个时间定义了socket读数据的超时时间,也就是连接到服务器之后到从服务器获取响应数据需要等待的时间,发生超时,会抛出SocketTimeoutException异常。
final int SOCKET_TIME_OUT = 60000;
//连接超时时间,这个时间定义了通过网络与服务器建立连接的超时时间,也就是取得了连接池中的某个连接之后到接通目标url的连接等待时间。发生超时,会抛出ConnectionTimeoutException异常
final int CONNECT_TIME_OUT = 60000;
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
// 这里的路径为证书存放路径
final String crtPath="/etc/elasticsearch/certs/http_ca.crt";
Certificate certificate = certificateFactory.generateCertificate(new FileInputStream(crtPath));
// Create TrustStore
KeyStore trustStoreContainingTheCertificate = KeyStore.getInstance("JKS");
trustStoreContainingTheCertificate.load(null, null);
// AddCertificate 第一个参数为证书别名, 可以任取
trustStoreContainingTheCertificate.setCertificateEntry("XYZ", certificate);
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(trustStoreContainingTheCertificate);
// Create SSLContext 我这里协议为TLSv1.2
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(null,trustManagerFactory.getTrustManagers(),null);
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext);
// Create custom httpClient 创建自定义httpClient连接
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslConnectionSocketFactory).build();
try{
// POST请求
//HttpPost method = new HttpPost("https://www.apapanet.com/");
//get
HttpPost postRequest = new HttpPost(uri);
//System.out.println("executing request" + method.getRequestLine());
postRequest.setHeader("Content-type", "application/json;charset=utf-8");
postRequest.setHeader("Accept", "application/json");
byte[] message = ("elastic:"+password).getBytes("UTF-8");
String basicAuth = DatatypeConverter.printBase64Binary(message);
postRequest.setHeader("Authorization","Basic " + basicAuth);
//setConfig,添加配置,如设置请求超时时间,连接超时时间
org.apache.http.client.config.RequestConfig reqConfig = org.apache.http.client.config.RequestConfig.custom().setSocketTimeout(SOCKET_TIME_OUT).setConnectTimeout(CONNECT_TIME_OUT).build();
postRequest.setConfig(reqConfig);
//setEntity,添加内容
HttpEntity entity = new StringEntity(queryData);
postRequest.setEntity(entity);
CloseableHttpResponse response = null;
response = httpClient.execute(postRequest);
int status = response.getStatusLine().getStatusCode();
if (status == HttpStatus.SC_OK) {
String body = EntityUtils.toString(response.getEntity());
if(StringUtils.isNotBlank(body)){
//System.out.println("body: "+body);
result= body;
}
}
response.close();
}
finally {
httpClient.close();
}
} catch (Exception e ){
e.printStackTrace();
}
return result;
}