typ det mesta klart...

This commit is contained in:
milis 2010-11-04 09:28:39 +01:00
parent a0de379fb6
commit d5f79cb746

View file

@ -54,6 +54,12 @@ final class HttpRequest implements Runnable
final static String HTTPVERSION = "HTTP/1.0";
final static String CRLF = "\r\n";
final static String Response200 = HTTPVERSION + " 200 OK "+CRLF;
final static String Response404 = HTTPVERSION + " 404 Not Found "+CRLF;
final static String Response400 = HTTPVERSION + " 400 Bad Request "+CRLF;
final static String Response501 = HTTPVERSION + " 501 Not Implemented "+CRLF;
final static String Location = " datalabb "+CRLF;
Socket socket;
// Constructor
@ -81,7 +87,7 @@ final class HttpRequest implements Runnable
// Set up input stream filters
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
Date d = new Date();
// Get the request line of the HTTP request
String requestLine = br.readLine();
@ -91,36 +97,59 @@ final class HttpRequest implements Runnable
System.out.println("Request:");
System.out.println(" " + requestLine);
String[] tokens = requestLine.split(" ");
String response = "";
if(tokens[0].equals(HTTP_METHOD.GET)){
response += HTTPVERSION + " ";
String[] tokens = requestLine.split("\\s+");
//System.out.println("-->"+tokens.length);
String Request = tokens[0];
if(tokens.length != 3){
System.out.println("Wrong number of arguments in request!");
outs.writeChars(Response400+Location+getDateString(d));
}
else if(tokens[1].charAt(0) != '/'){
System.out.println("illegal url");
outs.writeChars(Response501+Location+getDateString(d));
}
else if(Request.equals(HTTP_METHOD.GET) || Request.equals(HTTP_METHOD.HEAD)){
FileInputStream filein;
try{
filein = new FileInputStream(tokens[1]);
response += "200 OK "+CRLF+"kottedala"+CRLF;
File f = new File("." +tokens[1]);
filein = new FileInputStream(f);
String response = createHeader(d,f);
outs.writeChars(response);
sendBytes(filein,outs);
if(Request.equals(HTTP_METHOD.GET))
sendBytes(filein,outs);
}
catch (FileNotFoundException e){
response += "404 Not Found"+CRLF+"kottedala"+CRLF;
outs.writeChars(response);
// throw e;
outs.writeChars(Response404+getDateString(d));
}
} else
outs.writeChars(response + "400 Bad Request"+CRLF+"kotten"+CRLF);
} else if(Request.equals(HTTP_METHOD.POST)){
outs.writeChars(Response501+getDateString(d));
}
else
outs.writeChars(Response400+getDateString(d));
// for(String token : tokens)
// System.out.println("---> " + token);
// sendResponse(tokens[1],outs);
// Close streams and sockets
outs.close();
br.close();
socket.close();
}
private String getDateString(Date d){
return "Date: "+d.toString()+CRLF;
}
private String createHeader(Date d, File f){
String response = Response200;
response += getDateString(d);
response += "Location: " + f.getName() +CRLF;
response += "Server: Labbserver" + CRLF;
response += "Allow: " + HTTP_METHOD.GET + " " + HTTP_METHOD.HEAD+CRLF;
response += "Content-Length: " + f.length() +CRLF;
response += "Content-Type: " + contentType(f.getName()) +CRLF;
response += "Last-Modified: " + new Date(f.lastModified()).toString() +CRLF;
return response;
}
private static void sendBytes(FileInputStream fins,
OutputStream outs) throws Exception
{