/ Published in: Java
A RestClient class for calling webservice using both, get and post methods, and getting the response dropped into an String.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
public class RestClient { private ArrayList<NameValuePair> params; private ArrayList<NameValuePair> headers; private int responseCode; return response; } return message; } public int getResponseCode() { return responseCode; } { this.url = url; params = new ArrayList<NameValuePair>(); headers = new ArrayList<NameValuePair>(); } { params.add(new BasicNameValuePair(name, value)); } { headers.add(new BasicNameValuePair(name, value)); } { switch(method) { case GET: { //add parameters if(!params.isEmpty()){ combinedParams += "?"; { if(combinedParams.length() > 1) { combinedParams += "&" + paramString; } else { combinedParams += paramString; } } } HttpGet request = new HttpGet(url + combinedParams); //add headers { request.addHeader(h.getName(), h.getValue()); } executeRequest(request, url); break; } case POST: { HttpPost request = new HttpPost(url); //add headers { request.addHeader(h.getName(), h.getValue()); } if(!params.isEmpty()){ request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); } executeRequest(request, url); break; } } } { HttpClient client = new DefaultHttpClient(); HttpResponse httpResponse; try { httpResponse = client.execute(request); responseCode = httpResponse.getStatusLine().getStatusCode(); message = httpResponse.getStatusLine().getReasonPhrase(); HttpEntity entity = httpResponse.getEntity(); if (entity != null) { response = convertStreamToString(instream); // Closing the input stream will trigger connection release instream.close(); } } catch (ClientProtocolException e) { client.getConnectionManager().shutdown(); e.printStackTrace(); client.getConnectionManager().shutdown(); e.printStackTrace(); } } StringBuilder sb = new StringBuilder(); try { while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } e.printStackTrace(); } finally { try { is.close(); e.printStackTrace(); } } return sb.toString(); } } /* Here is an example of how I use the class to call the Google Analytics API. I use the AddParam methods to add query string / post values and the AddHeader method to add headers to the request. RequestMethod is a simple enum with GET and POST values. */ RestClient client = new RestClient(LOGIN_URL); client.AddParam("accountType", "GOOGLE"); client.AddParam("source", "tboda-widgalytics-0.1"); client.AddParam("Email", _username); client.AddParam("Passwd", _password); client.AddParam("service", "analytics"); client.AddHeader("GData-Version", "2"); try { client.Execute(RequestMethod.POST); e.printStackTrace(); }