public HttpRequest(BufferedReader from) {
String firstLine = "";
try {
firstLine = from.readLine();
} catch (IOException e) {
System.out.println("Error reading request line: " + e);
}
String[] tmp = firstLine.split(" ");
method = tmp[0];
URI = tmp[1];
version = tmp[2];
System.out.println("URI is: " + URI);
if(method.equals("POST")){
try {
String line = from.readLine();
while (line.length() != 0) {
headers += line + CRLF;
if (line.startsWith("Host:")) {
tmp = line.split(" ");
if (tmp[1].indexOf(':') > 0) {
String[] tmp2 = tmp[1].split(":");
host = tmp2[0];
port = Integer.parseInt(tmp2[1]);
} else {
host = tmp[1];
port = HTTP_PORT;
}
}
line = from.readLine();
}
headers += "Connection: close" + CRLF;
headers += CRLF;
}
catch (IOException e) {
System.out.println("Error reading from socket: " + e);
return;
}
}
else {
System.out.println("Error: Method not supported");
return;
}
System.out.println("Host to contact is: " + host + " at port " + port);
}
問題
我正在使用Java代理服務器。
上面的代碼處理HTTP POST請求。它成功讀取POST標題並將其打印在命令提示符中,但正文缺失。
你能看看我的代碼,看看問題嗎?謝謝。
(注:我排除的GET部分,因爲有與無的問題。)
結果
您能編輯上面的內容來顯示您收到的輸出 – calderonmluis
完成。請檢查結果部分。 –
將line.length()!= 0改爲(line = from.readLine())!= null) 使用line.length()!= 0可能會導致問題,如果由於某種原因存在在POST之前的空白行正文。 – calderonmluis