/** * Copyright (c) 2010-2016 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.openhab.binding.digitalstrom.internal.client.connection.transport; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.SocketTimeoutException; import java.net.URL; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author Alexander Betker * @author Alex Maier * @since 1.3.0 */ public class HttpTransport { private static final Logger logger = LoggerFactory.getLogger(HttpTransport.class); private final String uri; private final int connectTimeout; private final int readTimeout; public HttpTransport(String uri, int connectTimeout, int readTimeout) { this.uri = uri; this.connectTimeout = connectTimeout; this.readTimeout = readTimeout; } public String execute(String request) { return execute(request, this.connectTimeout, this.readTimeout); } public String execute(String request, int connectTimeout, int readTimeout) { if (request != null && !request.trim().equals("")) { HttpURLConnection connection = null; StringBuilder response = new StringBuilder(); BufferedReader in = null; try { URL url = new URL(this.uri + request); connection = (HttpURLConnection) url.openConnection(); int responseCode = -1; if (connection != null) { connection.setConnectTimeout(connectTimeout); connection.setReadTimeout(readTimeout); try { connection.connect(); responseCode = connection.getResponseCode(); } catch (SocketTimeoutException e) { logger.warn(e.getMessage() + " : " + request); return null; } if (responseCode == HttpURLConnection.HTTP_OK) { String inputLine = null; in = new BufferedReader(new InputStreamReader(connection.getInputStream())); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); } else { response = null; } } if (response != null) { return response.toString(); } } catch (MalformedURLException e) { logger.error( "MalformedURLException by executing jsonRequest: " + request + " ; " + e.getLocalizedMessage()); } catch (IOException e) { logger.error("IOException by executing jsonRequest: " + request + " ; " + e.getLocalizedMessage()); } finally { if (connection != null) { connection.disconnect(); } } } return null; } }