package Classes; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import Interfaces.Callback; public class ApiCall implements Runnable { private Callback callback; private HttpURLConnection connection; private String method; public ApiCall(String URL, String method, Callback call) { this.callback = call; this.method = method; try { URL url = new URL(URL); this.connection = (HttpURLConnection) url.openConnection(); this.connection.setRequestMethod(method); this.connection.setDoInput(true); this.connection.setDoOutput(true); } catch (IOException e) { System.out.println("Impossible d'ouvrir l'URL: "+URL); } } public void addHeaders(HashMap map) { Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry pair = (Map.Entry)it.next(); this.connection.setRequestProperty((String)pair.getKey(), (String)pair.getValue()); it.remove(); // avoids a ConcurrentModificationException } } @Override public void run() { try { //Send request DataOutputStream wr = new DataOutputStream (connection.getOutputStream ()); wr.flush (); wr.close (); //Get Response InputStream is = connection.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); String line; StringBuffer response = new StringBuffer(); while((line = rd.readLine()) != null) { response.append(line); } rd.close(); this.callback.call(response.toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void send() { new Thread(this).start(); } }