this.length = length == -1 ? 0 : length;
}
+ public void markSupported() { return false; }
+ public int read(byte[] b) throws IOException { return read(b, 0, b.length); }
+ public long skip(long n) { return read(null, -1, (int)n); }
+ public int available() {
+ if (contentLength == -1) return Math.min(super.available(), length);
+ return super.available();
+ }
+
+ public int read() throws IOException {
+ byte[] b = new byte[1];
+ int ret = read(b, 0, 1);
+ return ret == -1 ? -1 : b[0] & 0xff;
+ }
+
private void readChunk() throws IOException {
if (chunkedDone) return;
if (!firstChunk) super.skip(2); // CRLF
if (length == 0) { good = true; return -1; }
}
if (len > length) len = length;
- int ret = super.read(b, off, len);
+ int ret = b == null ? super.skip(len) : super.read(b, off, len);
if (ret >= 0) {
length -= ret;
good = true;