school/cs240/record-indexer/src/client/communication/modules/HttpClient.java

114 lines
3.4 KiB
Java
Raw Normal View History

2016-04-06 20:50:11 -07:00
package client.communication.modules;
import client.communication.errors.RemoteServerErrorException;
import client.communication.errors.UnauthorizedAccessException;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class HttpClient {
private static InputStream request(String url, String method, String request)
throws RemoteServerErrorException, UnauthorizedAccessException{
try {
URL requestURL = new URL(url);
HttpURLConnection connection = (HttpURLConnection) requestURL.openConnection();
// We can generalize, whatever
connection.setDoOutput(true);
connection.setRequestMethod(method);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(
connection.getOutputStream());
outputStreamWriter.write(request);
outputStreamWriter.close();
switch (connection.getResponseCode()) {
case HttpURLConnection.HTTP_OK:
return connection.getInputStream();
case HttpURLConnection.HTTP_UNAUTHORIZED:
throw new UnauthorizedAccessException();
default:
throw new RemoteServerErrorException();
}
} catch (MalformedURLException e) {
throw new RemoteServerErrorException();
} catch (IOException e) {
throw new RemoteServerErrorException();
}
}
public static String get(String url)
throws UnauthorizedAccessException, RemoteServerErrorException {
InputStream response = request(url, "GET", "");
return inputStreamToString(response);
}
public static String post(String url, String req)
throws UnauthorizedAccessException, RemoteServerErrorException {
InputStream response = request(url, "POST", req);
return inputStreamToString(response);
}
public static ByteArrayOutputStream getStatic(String url)
throws UnauthorizedAccessException, RemoteServerErrorException {
InputStream response = request(url, "GET", "");
if(response != null) {
try {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] byteArray = new byte[512];
int bytesRead = 0;
while((bytesRead = response.read(byteArray)) != -1) {
byteArrayOutputStream.write(byteArray, 0, bytesRead);
}
return byteArrayOutputStream;
} catch (IOException e) {
return null;
}
}
return null;
}
private static String inputStreamToString(InputStream inputStream) {
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(inputStream));
String line;
try {
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try { bufferedReader.close(); } catch (IOException e) {
e.printStackTrace(); }
}
try {
inputStream.close();
} catch (IOException e) {
}
return stringBuilder.toString();
}
}