diff options
Diffstat (limited to 'source/com/c2kernel/utils/server/HTTPRequestHandler.java')
| -rw-r--r-- | source/com/c2kernel/utils/server/HTTPRequestHandler.java | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/source/com/c2kernel/utils/server/HTTPRequestHandler.java b/source/com/c2kernel/utils/server/HTTPRequestHandler.java index 78635e6..886ae9f 100644 --- a/source/com/c2kernel/utils/server/HTTPRequestHandler.java +++ b/source/com/c2kernel/utils/server/HTTPRequestHandler.java @@ -24,22 +24,26 @@ public class HTTPRequestHandler implements SocketHandler { protected final static String CRLF = "\r\n";
protected BufferedReader request;
protected Socket currentSocket = null;
-
+
public HTTPRequestHandler() { }
-
- public String getName() {
+
+ @Override
+ public String getName() {
return "HTTP Server";
}
- public boolean isBusy() {
+ @Override
+ public boolean isBusy() {
return (currentSocket!=null);
}
- public void setSocket(Socket newSocket) {
+ @Override
+ public void setSocket(Socket newSocket) {
currentSocket = newSocket;
}
-
- public void shutdown() {
+
+ @Override
+ public void shutdown() {
try {
if (currentSocket != null) currentSocket.close();
} catch (IOException e) {
@@ -47,11 +51,12 @@ public class HTTPRequestHandler implements SocketHandler { }
currentSocket = null;
}
-
- public void run() {
+
+ @Override
+ public void run() {
Thread.currentThread().setName("HTTP Request Handler");
try {
- request = new BufferedReader(new InputStreamReader(currentSocket.getInputStream()));
+ request = new BufferedReader(new InputStreamReader(currentSocket.getInputStream()));
// parse the request
boolean firstLine = true;
String headerLine;
@@ -70,7 +75,7 @@ public class HTTPRequestHandler implements SocketHandler { }
else { // headers
int split = headerLine.indexOf(": ");
- if (split >= 0)
+ if (split >= 0)
headers.put(
headerLine.substring(0, split),
headerLine.substring(split+2)
@@ -81,10 +86,10 @@ public class HTTPRequestHandler implements SocketHandler { String response = null;
try {
-
+
if (headers.containsKey("Content-length")) { // read POST data
StringBuffer postBuffer = new StringBuffer();
- int received = 0; int length = Integer.parseInt((String)headers.get("Content-length"));
+ int received = 0; int length = Integer.parseInt(headers.get("Content-length"));
try {
while (received < length) {
String postLine = request.readLine();
@@ -98,7 +103,7 @@ public class HTTPRequestHandler implements SocketHandler { }
}
// Got the params, generate response
-
+
returnMIME = "text/xml";
statusCode = "200 OK";
@@ -109,47 +114,47 @@ public class HTTPRequestHandler implements SocketHandler { System.out.println(new Date().toString()+" "+currentSocket.getInetAddress()+" "+method+" "+resource+" "+statusCode);
OutputStream output = currentSocket.getOutputStream();
-
+
statusCode = "HTTP/1.0 "+statusCode+CRLF;
output.write(statusCode.getBytes());
-
+
returnMIME = "Content-type: "+returnMIME+CRLF;
output.write(returnMIME.getBytes());
-
+
String contentLength = "Content-Length: "+response.length()+CRLF;
output.write(contentLength.getBytes());
-
+
// Possible: last mod?
// end of headers
output.write(CRLF.getBytes());
-
+
// write the content
output.write(response.getBytes());
request.close();
output.close();
currentSocket.close();
- } catch (IOException ex2) {
+ } catch (IOException ex2) {
Logger.error(ex2);
} // aborted connection probably
currentSocket = null;
}
-
+
/* This is a dummy method that doesn't support anything.
* Override it.
*/
-
+
public String processRequest() {
return error("501 Not Implemented", "The method "+method+" you have requested is not supported by this server.");
}
-
+
public String error(String code, String desc) {
statusCode = code;
returnMIME = "text/html";
- return ("<HTML>" +
+ return ("<HTML>" +
"<HEAD><TITLE>"+code+"</TITLE></HEAD>" +
"<BODY><h1>"+code+"</h1>" +
"<p>"+desc+
"<hr><p><small>Cristal Item HTTP server</small></BODY></HTML>");
}
}
-
+
|
