diff --git a/src/org/redkale/net/http/HttpRequest.java b/src/org/redkale/net/http/HttpRequest.java index 31115690e..cbdafd6b5 100644 --- a/src/org/redkale/net/http/HttpRequest.java +++ b/src/org/redkale/net/http/HttpRequest.java @@ -16,8 +16,8 @@ import java.util.*; import java.util.logging.Level; import org.redkale.convert.json.JsonConvert; import org.redkale.net.*; -import org.redkale.util.*; import org.redkale.util.AnyValue.DefaultAnyValue; +import org.redkale.util.*; /** * Http请求包 与javax.servlet.http.HttpServletRequest 基本类似。
@@ -109,40 +109,41 @@ public class HttpRequest extends Request { @Override protected int readHeader(final ByteBuffer buffer) { - if (!readLine(buffer, array)) return -1; + ByteArray bytes = array; + if (!readLine(buffer, bytes)) return -1; Charset charset = this.context.getCharset(); int index = 0; - int offset = array.find(index, ' '); + int offset = bytes.find(index, ' '); if (offset <= 0) return -1; - this.method = array.toString(index, offset, charset).trim(); + this.method = bytes.toString(index, offset, charset); index = ++offset; - offset = array.find(index, ' '); + offset = bytes.find(index, ' '); if (offset <= 0) return -1; - int off = array.find(index, '#'); + int off = bytes.find(index, '#'); if (off > 0) offset = off; - int qst = array.find(index, offset, (byte) '?'); + int qst = bytes.find(index, offset, (byte) '?'); if (qst > 0) { - this.requestURI = array.toDecodeString(index, qst - index, charset).trim(); - this.queryBytes = array.getBytes(qst + 1, offset - qst - 1); + this.requestURI = bytes.toDecodeString(index, qst - index, charset); + this.queryBytes = bytes.getBytes(qst + 1, offset - qst - 1); try { - addParameter(array, qst + 1, offset - qst - 1); + addParameter(bytes, qst + 1, offset - qst - 1); } catch (Exception e) { - this.context.getLogger().log(Level.WARNING, "HttpRequest.addParameter error: " + array.toString(), e); + this.context.getLogger().log(Level.WARNING, "HttpRequest.addParameter error: " + bytes.toString(), e); } } else { - this.requestURI = array.toDecodeString(index, offset - index, charset).trim(); + this.requestURI = bytes.toDecodeString(index, offset - index, charset); this.queryBytes = new byte[0]; } index = ++offset; - this.protocol = array.toString(index, array.size() - index, charset).trim(); - while (readLine(buffer, array)) { - if (array.size() < 2) break; + this.protocol = bytes.toString(index, bytes.size() - index, charset); + while (readLine(buffer, bytes)) { + if (bytes.size() < 2) break; index = 0; - offset = array.find(index, ':'); + offset = bytes.find(index, ':'); if (offset <= 0) return -1; - String name = array.toString(index, offset, charset).trim(); + String name = bytes.toString(index, offset, charset); index = offset + 1; - String value = array.toString(index, array.size() - index, charset).trim(); + String value = bytes.toString(index, bytes.size() - index, charset); switch (name) { case "Content-Type": case "content-type": @@ -181,14 +182,14 @@ public class HttpRequest extends Request { if (this.contentType != null && this.contentType.contains("boundary=")) this.boundary = true; if (this.boundary) this.keepAlive = false; //文件上传必须设置keepAlive为false,因为文件过大时用户不一定会skip掉多余的数据 - array.clear(); + bytes.clear(); if (this.contentLength > 0 && (this.contentType == null || !this.boundary)) { if (this.contentLength > context.getMaxbody()) return -1; - array.write(buffer, Math.min((int) this.contentLength, buffer.remaining())); - int lr = (int) this.contentLength - array.size(); + bytes.write(buffer, Math.min((int) this.contentLength, buffer.remaining())); + int lr = (int) this.contentLength - bytes.size(); return lr > 0 ? lr : 0; } - if (buffer.hasRemaining() && (this.boundary || !this.keepAlive)) array.write(buffer, buffer.remaining()); //文件上传、HTTP1.0或Connection:close + if (buffer.hasRemaining() && (this.boundary || !this.keepAlive)) bytes.write(buffer, buffer.remaining()); //文件上传、HTTP1.0或Connection:close //暂不考虑是keep-alive且存在body却没有指定Content-Length的情况 return 0; }