package qa.qcri.aidr.trainer.pybossa.service.impl; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; 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.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.log4j.Logger; import qa.qcri.aidr.trainer.pybossa.service.AbstractCommunicator; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; /** * Created with IntelliJ IDEA. * User: jilucas * Date: 9/17/13 * Time: 4:26 PM * To change this template use File | Settings | File Templates. */ public class PybossaCommunicator extends AbstractCommunicator { // will be placed on config. protected static Logger logger = Logger.getLogger("PybossaCommunicator"); public PybossaCommunicator(){ super(PybossaCommunicator.class); } @Override public int sendPut(String data, String url) { int responseCode = -1; HttpClient httpClient = new DefaultHttpClient(); try { HttpPut request = new HttpPut(url); StringEntity params =new StringEntity(data,"UTF-8"); params.setContentType("application/json"); request.addHeader("content-type", "application/json"); request.addHeader("Accept", "*/*"); request.addHeader("Accept-Encoding", "gzip,deflate,sdch"); request.addHeader("Accept-Language", "en-US,en;q=0.8"); request.setEntity(params); HttpResponse response = httpClient.execute(request); responseCode = response.getStatusLine().getStatusCode(); if (response.getStatusLine().getStatusCode() == 200 || response.getStatusLine().getStatusCode() == 204) { BufferedReader br = new BufferedReader( new InputStreamReader((response.getEntity().getContent()))); String output; // System.out.println("Output from Server ...." + response.getStatusLine().getStatusCode() + "\n"); while ((output = br.readLine()) != null) { // System.out.println(output); } } else{ logger.error(response.getStatusLine().getStatusCode()); throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode()); } }catch (Exception ex) { logger.error("ex Code sendPut: " + ex); logger.error("url:" + url); logger.error("data:" + data); } finally { httpClient.getConnectionManager().shutdown(); } return responseCode; } @Override public String deleteGet(String url){ int responseCode = -1; HttpClient httpClient = new DefaultHttpClient(); StringBuffer responseOutput = new StringBuffer(); try { HttpDelete request = new HttpDelete(url); request.addHeader("content-type", "application/json"); HttpResponse response = httpClient.execute(request); responseCode = response.getStatusLine().getStatusCode(); if ( responseCode == 200 || responseCode == 204) { if(response.getEntity()!=null){ BufferedReader br = new BufferedReader( new InputStreamReader((response.getEntity().getContent()))); String output; while ((output = br.readLine()) != null) { responseOutput.append(output); } } } else{ throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode()); } }catch (Exception ex) { logger.error("ex Code deleteGet1: " + ex); logger.error("ex Code deleteGet2: " + url); } finally { httpClient.getConnectionManager().shutdown(); } if(responseCode == -1){ return "Exception"; } return responseOutput.toString(); } @Override public int sendPost(String data, String url) { // dataoutput="{\"info\": {\"username\": \" drippingmind\", \"userid\": \"449077875\", \"n_answers\": 2, \"date\": \" Wed Dec 05 11:13:18 CET 2012\", \"text\": \" Google provides support in the #Philippines w/ crisis response map 4 typhoon #Pablo #Bopha http://t.co/mJCNBHAJ #DRM #ICT #EmergencyResponse\", \"question\": \"Please tag the following tweet or SMS based on the category or categories that best describes the link(s) included in the tweet/Sms\", \"tweetid\": \"2.76E17\"}, \"state\": 0, \"n_answers\": 30, \"quorum\": 0, \"calibration\": 0, \"app_id\": 4, \"priority_0\": 0}"; int responseCode = -1; HttpClient httpClient = new DefaultHttpClient(); try { HttpPost request = new HttpPost(url); StringEntity params =new StringEntity(data, "UTF-8"); params.setContentType("application/json"); request.addHeader("content-type", "application/json"); request.setEntity(params); HttpResponse response = httpClient.execute(request); responseCode = response.getStatusLine().getStatusCode(); if ( responseCode == 200 || responseCode == 204) { if(response.getEntity()!=null){ BufferedReader br = new BufferedReader( new InputStreamReader((response.getEntity().getContent()))); String output; logger.info("Output from Server ...." + response.getStatusLine().getStatusCode() + "\n"); while ((output = br.readLine()) != null) { logger.info(output); } } } else{ throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode()); } }catch (Exception ex) { logger.error("ex Code sendPost1: " + ex); logger.error("ex Code sendPost2: " + data); logger.error("ex Code sendPost3: " + url); throw new RuntimeException(" sendPost Failed :" + ex.getMessage()); } finally { httpClient.getConnectionManager().shutdown(); } return responseCode; } @Override public String sendPostGet(String data, String url) { // dataoutput="{\"info\": {\"username\": \" drippingmind\", \"userid\": \"449077875\", \"n_answers\": 2, \"date\": \" Wed Dec 05 11:13:18 CET 2012\", \"text\": \" Google provides support in the #Philippines w/ crisis response map 4 typhoon #Pablo #Bopha http://t.co/mJCNBHAJ #DRM #ICT #EmergencyResponse\", \"question\": \"Please tag the following tweet or SMS based on the category or categories that best describes the link(s) included in the tweet/Sms\", \"tweetid\": \"2.76E17\"}, \"state\": 0, \"n_answers\": 30, \"quorum\": 0, \"calibration\": 0, \"app_id\": 4, \"priority_0\": 0}"; HttpClient httpClient = new DefaultHttpClient(); StringBuffer responseOutput = new StringBuffer(); try { HttpPost request = new HttpPost(url); StringEntity params =new StringEntity(data, "UTF-8"); params.setContentType("application/json"); request.addHeader("content-type", "application/json"); request.setEntity(params); HttpResponse response = httpClient.execute(request); int responseCode = response.getStatusLine().getStatusCode(); if (responseCode == 200 || responseCode == 204) { BufferedReader br = new BufferedReader( new InputStreamReader((response.getEntity().getContent()))); String output; // System.out.println("Output from Server ...." + response.getStatusLine().getStatusCode() + "\n"); while ((output = br.readLine()) != null) { responseOutput.append(output); } } else{ throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode()); } }catch (Exception ex) { logger.error("Exception Code : " + ex); responseOutput.append("Exception Code : " + ex); } finally { httpClient.getConnectionManager().shutdown(); } return responseOutput.toString(); } public String sendGetTester(String url) { HttpClient httpClient = new DefaultHttpClient(); StringBuffer responseOutput = new StringBuffer(); try { HttpGet request = new HttpGet(url); HttpResponse response = httpClient.execute(request); int responseCode = response.getStatusLine().getStatusCode(); if (responseCode == 200 || responseCode == 204) { BufferedReader br = new BufferedReader( new InputStreamReader((response.getEntity().getContent()))); String output; // System.out.println("Output from Server ...." + response.getStatusLine().getStatusCode() + "\n"); while ((output = br.readLine()) != null) { responseOutput.append(output); } } else{ throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode()); } }catch (Exception ex) { logger.error("ex Code sendGet: " + ex + " : sendGet url = " + url); logger.error("[errror on sendGet ]" + url); } finally { httpClient.getConnectionManager().shutdown(); } return responseOutput.toString(); } @Override public String sendGet(String url) { HttpURLConnection con = null; StringBuffer response = new StringBuffer(); // System.out.println("sendGet url : " + url); // logger.debug("[sendGet url for debugger: ]" + url); // Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("123.0.0.1", 8080)); try { URL connectionURL = new URL(url); con = (HttpURLConnection) connectionURL.openConnection(); con.setConnectTimeout(5000); con.setRequestMethod("GET"); con.setRequestProperty("User-Agent", USER_AGENT); int responseCode = con.getResponseCode(); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream(),"UTF-8")); String inputLine; // logger.debug("[response code ]" + responseCode); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); } catch (java.net.SocketTimeoutException e1) { logger.error("ex Code sendGet 1: " + e1 + " : sendGet url = " + url); logger.error("[errror on sendGet ]" + url); } catch (java.io.IOException e2) { logger.error("ex Code sendGet 2: " + e2 + " : sendGet url = " + url); logger.error("[errror on sendGet ]" + url); }catch (Exception ex) { logger.error("ex Code sendGet 3: " + ex + " : sendGet url = " + url); logger.error("[errror on sendGet ]" + url); } finally { if(con != null){ con.disconnect(); } } return response.toString(); } }