/**
* @author Alejandro Alcalde <algui91@gmail.com>
* @author Vicente
* @RestServiceCaller.java
* Nov 10, 2012
*/
package com.elbauldelprogramador.restlib;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
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.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class RestServiceCaller {
public static final int RET_SUCCESS = 1;
public static final int RET_ERROR = 0;
public static final int RET_ERR_NETWORK = -1;
public static final int RET_ERR_WEBSERVICE = -2;
public RestResponse execute(RestRequest request) {
final RestResponse response;
try {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpRequestBase httpRequest = null;
HttpEntityEnclosingRequestBase entityRequest;
switch (request.getMethod()) {
case RestRequest.GET_METHOD:
httpRequest = new HttpGet(request.getURI());
break;
case RestRequest.POST_METHOD:
httpRequest = new HttpPost(request.getURI());
entityRequest = (HttpEntityEnclosingRequestBase) httpRequest;
entityRequest.setEntity(new StringEntity(request.getContent()));
break;
case RestRequest.PUT_METHOD:
httpRequest = new HttpPut(request.getURI());
entityRequest = (HttpEntityEnclosingRequestBase) httpRequest;
entityRequest.setEntity(new StringEntity(request.getContent()));
break;
case RestRequest.DELETE_METHOD:
httpRequest = new HttpDelete(request.getURI());
entityRequest = (HttpEntityEnclosingRequestBase) httpRequest;
entityRequest.setEntity(new StringEntity(request.getContent()));
break;
}
httpRequest.setHeader("Accept", "application/json");
httpRequest.setHeader("Content-type", "application/json");
response = new RestResponse();
ResponseHandler<String> handler = new ResponseHandler<String>() {
public String handleResponse(HttpResponse httpresponse)
throws ClientProtocolException, IOException {
StringBuilder r = new StringBuilder();
BufferedReader reader = new BufferedReader(
new InputStreamReader(httpresponse.getEntity()
.getContent(), "UTF-8"));
for (String line = null; (line = reader.readLine()) != null;)
r.append(line).append("\n");
response.setResponseCode(httpresponse.getStatusLine()
.getStatusCode());
return r.toString();
}
};
String result = httpclient.execute(httpRequest, handler);
response.setResponse(result);
} catch (Exception e) {
return null;
}
return response;
}
}