Hi,
This post might not belong in this forum, but I posted it because responses in this forum are very quick.
I am so desperate and I need to fix it ASAP.
Thanks in advance
I am currently writing a server which will respond to three methods GET, HEAD, POST methods.
what I am trying to do is to read all the request headers generated from a httpClient request
(i,e. POST /HTTP1.0, Content-length:111, Host: localhost:4444, and so on)
and put all of them together into a string named as request and then pass the request string to another method to process the request.
My problem is stated below.
when I print out request is always null…
is = incoming.getInputStream();
os = incoming.getOutputStream();
in = new Scanner(is);
out = new DataOutputStream(os);
String request = "";
while (in.hasNextLine()){
String input = in.nextLine();
request = request + input;
}
System.out.println(request);
The following is my full code…
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class HttpServer {
static int PORT = 4444;
@SuppressWarnings("resource")
public static void main(String[] args) {
try {
ServerSocket s = new ServerSocket(PORT);
System.out.println("Server is running!!");
System.out.println(InetAddress.getLocalHost());
while (true) {
Socket incoming = s.accept();
System.out
.println(incoming.getRemoteSocketAddress().toString());
Threads t = new Threads(incoming);
t.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Threads extends Thread {
private Socket incoming;
private InputStream is = null;
private OutputStream os = null;
private Scanner in = null;
private DataOutputStream out = null;
public Threads(Socket i) {
incoming = i;
}
public void run() {
try {
is = incoming.getInputStream();
os = incoming.getOutputStream();
in = new Scanner(is);
out = new DataOutputStream(os);
String request = "";
while (in.hasNextLine()){
String input = in.nextLine();
request = request + input;
}
System.out.println(request);
byte[] requestB = request.getBytes();
RequestHandler rh = new RequestHandler();
out.write(rh.processRequest(requestB)) ;
is.close();
os.close();
in.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}