Reputation: 3459
I have a server A that uses Httpcore, HttpcoreNIO for HTTP communications. I have written a Simple Java Socket Server B to use as a backend.
public void run() {
String expectedResponse = "HTTP/1.0 200 OK\r\nServer: testServer\r\n" +
"Content-Type: text/html\r\n" +
"Transfer-Encoding: chunked\r\n" +
"Transfer-Encoding: chunked\r\n" +
"\r\n" + "<HTML>\n" + "<!DOCTYPE HTML PUBLIC " +
"\"-//W3C//DTD HTML 4.0 Transitional//EN\">\n" +
"<HEAD>\n" + " <TITLE>Hello World</TITLE>\n" +
"</HEAD>\n" + "\n" + "<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=\"CENTER\"> Hello</H1>\n" +
"Sample text 123\n" +
"test 123:\n" + "<PRE>";
try {
serverSocket = new ServerSocket(port);
System.err.println("Server starting on port : " + port);
while (true) {
Socket clientSocket = serverSocket.accept();
System.err.println("Client connected");
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
while (true) {
String s;
if ((s = in.readLine()) != null) {
System.out.println(s);
if (!s.isEmpty()) {
continue;
}
}
out.write(expectedOutput);
System.err.println("connection terminated");
out.close();
in.close();
clientSocket.close();
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
When server A receives a response from the backend B, I am getting the following exception.
Premature end of chunk coded message body: closing chunk expected
It seems that Httpcore is expecting a Closing chunk (or Zero-length chunk) before closing the connection.
Can someone let me know how to send this closing chunk from the above Java Simple Socket Server?
Upvotes: 1
Views: 1004
Reputation: 790
Transfer encoding chunked http header means that you are sending the http body in chunks. Each chunk starts with a "header" with the chunk size in bytes, and "/r/n", and then the chunk itself. Once you will do it, and you are done, you should send "0" and "/r/n".
BTW, is there a reason you are sending the "transfer encoding chunked" http header twice?
Upvotes: 2