Java tutorial
/** * Mule Constant Contact Connector * * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ /** * This file was automatically generated by the Mule Development Kit */ package org.mule.modules.constantcontact; import org.apache.commons.httpclient.auth.AuthPolicy; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpEntityEnclosingRequest; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.log4j.Logger; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; public class RequestExecutor { private static final Logger LOGGER = Logger.getLogger(RequestExecutor.class); private DefaultHttpClient httpclient = new DefaultHttpClient(); public RequestExecutor(String apiKey, String username, String password) { String loginUsername = apiKey + "%" + username; httpclient.getCredentialsProvider().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(loginUsername, password)); httpclient.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, Arrays.asList(AuthPolicy.BASIC)); } public String doGetRequest(String uri) throws ConstantContactException { HttpGet httpGet = new HttpGet(uri); return doGetRequest(httpGet); } public String doGetRequest(HttpGet httpGet) throws ConstantContactException { return executeRequest(httpGet).getResponseText(); } public Response doDeleteRequest(String s) throws ConstantContactException { HttpDelete httpDelete = new HttpDelete(s); return executeRequest(httpDelete); } public void doDeleteRequest(String uri, int expectedHttpStatusCode) throws ConstantContactException { Response response = doDeleteRequest(uri); if (response.getHttpStatusCode() != expectedHttpStatusCode) { throw new ConstantContactException( "DELETE request return HTTP status code different than expected: expected=" + expectedHttpStatusCode + " actual=" + response.getHttpStatusCode(), response.getHttpStatusCode(), response.getResponseText()); } } public String doPostRequest(HttpPost httpPost) throws ConstantContactException { return executeRequest(httpPost).getResponseText(); } private Response executeRequest(HttpRequestBase httpRequest) throws ConstantContactException { InputStream responseStream = null; try { logRequest(httpRequest); HttpResponse httpResponse = httpclient.execute(httpRequest); HttpEntity responseEntity = httpResponse.getEntity(); int status = httpResponse.getStatusLine().getStatusCode(); Response response; if (responseEntity != null) { responseStream = responseEntity.getContent(); response = new Response(status, IOUtils.toString(responseStream)); } else { response = new Response(status, ""); } logResponse(response); // If receive anything but a 200 status, return a null input stream if (status >= HttpStatus.SC_BAD_REQUEST) { throw new ConstantContactException("Received HTTP status code greater than or equal to 400", httpRequest, response); } return response; } catch (IOException e) { throw new ConstantContactException(e); } finally { IOUtils.closeQuietly(responseStream); } } private void logResponse(Response response) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Response received from server: status code: " + response.getHttpStatusCode() + " - response text: " + response.getResponseText()); } } private void logRequest(HttpRequestBase httpRequest) throws IOException { if (LOGGER.isDebugEnabled()) { if (httpRequest instanceof HttpEntityEnclosingRequest) { LOGGER.debug("Executing HTTP request: method = " + httpRequest.getMethod() + " - URI = " + httpRequest.getURI() + " - body = " + IOUtils.toString(((HttpEntityEnclosingRequest) httpRequest).getEntity().getContent())); } else { LOGGER.debug("Executing HTTP request: method = " + httpRequest.getMethod() + " - URI = " + httpRequest.getURI()); } } } public void doPutRequest(HttpPut httpPut) throws ConstantContactException { executeRequest(httpPut); } public static class Response { private int httpStatusCode; private String responseText; private Response(int httpStatusCode, String responseText) { this.httpStatusCode = httpStatusCode; this.responseText = responseText; } public int getHttpStatusCode() { return httpStatusCode; } public String getResponseText() { return responseText; } } }