JavaFX/Classes/ApiCall.java

76 lines
1.8 KiB
Java

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<String,String> 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();
}
}