Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package net.acesinc.data.json.generator.log; import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.util.Map; import javax.net.ssl.SSLContext; import org.apache.http.HttpEntity; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** * * @author andrewserff */ public class HttpPostLogger implements EventLogger { private static final Logger log = LogManager.getLogger(HttpPostLogger.class); public static final String URL_PROP_NAME = "url"; private String url; private CloseableHttpClient httpClient; public HttpPostLogger(Map<String, Object> props) throws NoSuchAlgorithmException { this.url = (String) props.get(URL_PROP_NAME); SSLConnectionSocketFactory sf = new SSLConnectionSocketFactory(SSLContext.getDefault(), new NoopHostnameVerifier()); this.httpClient = HttpClientBuilder.create().setSSLSocketFactory(sf).build(); } @Override public void logEvent(String event, Map<String, Object> producerConfig) { logEvent(event); } private void logEvent(String event) { try { HttpPost request = new HttpPost(url); StringEntity input = new StringEntity(event); input.setContentType("application/json"); request.setEntity(input); // log.debug("executing request " + request); CloseableHttpResponse response = null; try { response = httpClient.execute(request); } catch (IOException ex) { log.error("Error POSTing Event", ex); } if (response != null) { try { // log.debug("----------------------------------------"); // log.debug(response.getStatusLine().toString()); HttpEntity resEntity = response.getEntity(); if (resEntity != null) { // log.debug("Response content length: " + resEntity.getContentLength()); } EntityUtils.consume(resEntity); } catch (IOException ioe) { //oh well } finally { try { response.close(); } catch (IOException ex) { } } } } catch (Exception e) { } } @Override public void shutdown() { try { httpClient.close(); } catch (IOException ex) { //oh well } } }