Java 类org.apache.http.impl.io.ContentLengthInputStream 实例源码
项目:fdk-java
文件:FnTestHarness.java
/**
* Set the body of the request by providing an InputStream
*
* @param body the bytes of the body
* @param contentLength how long the body is supposed to be
*/
public EventBuilder withBody(InputStream body, int contentLength) {
Objects.requireNonNull(body, "body");
if (contentLength < 0) {
throw new IllegalArgumentException("Invalid contentLength");
}
// This is for safety. Because we concatenate events, an input stream shorter than content length will cause
// the implementation to continue reading through to the next http request. We need to avoid a sort of
// buffer overrun.
// FIXME: Make InputStream handling simpler.
SessionInputBufferImpl sib = new SessionInputBufferImpl(new HttpTransportMetricsImpl(), 65535);
sib.bind(body);
this.body = new ContentLengthInputStream(sib, contentLength);
this.contentLength = contentLength;
return this;
}
项目:wso2-axis2
文件:AxisHttpConnectionImpl.java
public HttpRequest receiveRequest() throws HttpException, IOException {
HttpRequest request = (HttpRequest) this.requestParser.parse();
if (HEADERLOG.isDebugEnabled()) {
HEADERLOG.debug(">> " + request.getRequestLine().toString());
for (HeaderIterator it = request.headerIterator(); it.hasNext(); ) {
HEADERLOG.debug(">> " + it.nextHeader().toString());
}
}
// Prepare input stream
this.in = null;
if (request instanceof HttpEntityEnclosingRequest) {
long len = this.contentLenStrategy.determineLength(request);
if (len == ContentLengthStrategy.CHUNKED) {
this.in = new ChunkedInputStream(this.inbuffer);
} else if (len == ContentLengthStrategy.IDENTITY) {
this.in = new IdentityInputStream(this.inbuffer);
} else {
this.in = new ContentLengthInputStream(inbuffer, len);
}
}
return request;
}
项目:lams
文件:EntityDeserializer.java
/**
* Creates a {@link BasicHttpEntity} based on properties of the given
* message. The content of the entity is created by wrapping
* {@link SessionInputBuffer} with a content decoder depending on the
* transfer mechanism used by the message.
* <p>
* This method is called by the public
* {@link #deserialize(SessionInputBuffer, HttpMessage)}.
*
* @param inbuffer the session input buffer.
* @param message the message.
* @return HTTP entity.
* @throws HttpException in case of HTTP protocol violation.
* @throws IOException in case of an I/O error.
*/
protected BasicHttpEntity doDeserialize(
final SessionInputBuffer inbuffer,
final HttpMessage message) throws HttpException, IOException {
BasicHttpEntity entity = new BasicHttpEntity();
long len = this.lenStrategy.determineLength(message);
if (len == ContentLengthStrategy.CHUNKED) {
entity.setChunked(true);
entity.setContentLength(-1);
entity.setContent(new ChunkedInputStream(inbuffer));
} else if (len == ContentLengthStrategy.IDENTITY) {
entity.setChunked(false);
entity.setContentLength(-1);
entity.setContent(new IdentityInputStream(inbuffer));
} else {
entity.setChunked(false);
entity.setContentLength(len);
entity.setContent(new ContentLengthInputStream(inbuffer, len));
}
Header contentTypeHeader = message.getFirstHeader(HTTP.CONTENT_TYPE);
if (contentTypeHeader != null) {
entity.setContentType(contentTypeHeader);
}
Header contentEncodingHeader = message.getFirstHeader(HTTP.CONTENT_ENCODING);
if (contentEncodingHeader != null) {
entity.setContentEncoding(contentEncodingHeader);
}
return entity;
}
项目:fdk-java
文件:FnHttpEventBuilder.java
public FnHttpEventBuilder withBody(InputStream body, int contentLength) {
Objects.requireNonNull(body, "body");
if (contentLength < 0) {
throw new IllegalArgumentException("Invalid contentLength");
}
// This is for safety. Because we concatenate events, an input stream shorter than content length will cause
// the implementation to continue reading through to the next http request. We need to avoid a sort of
// buffer overrun.
// FIXME: Make InputStream handling simpler.
SessionInputBufferImpl sib = new SessionInputBufferImpl(new HttpTransportMetricsImpl(), 65535);
sib.bind(body);
this.bodyStream = new ContentLengthInputStream(sib, contentLength);
this.contentLength = contentLength;
return this;
}
项目:BUbiNG
文件:BoundSessionInputBuffer.java
/**
* Creates a new {@link SessionInputBuffer} bounded to a given maximum length.
*
* @param buffer the buffer to wrap
* @param length the maximum number of bytes to read (from the buffered stream).
*/
public BoundSessionInputBuffer(final SessionInputBuffer buffer, final long length) {
super(new HttpTransportMetricsImpl(), BUFFER_SIZE, 0, null, null);
this.bounded = new ContentLengthInputStream(buffer, length);
this.input = new CountingInputStream(this.bounded);
super.bind(this.input);
this.length = length;
}
项目:BUbiNG
文件:InputStreamTestMocks.java
public HttpResponseWarcRecord(SessionInputBuffer buffer) throws IOException {
super(buffer);
buffer = warpSessionInputBuffer(new ByteArrayInputStream(this.payload));
this.headers = readCRLFSeparatedBlock(buffer);
long contentLength = contentLength(this.headers);
InputStream blockStream = new ContentLengthInputStream(buffer, contentLength);
this.entity = new byte[(int)contentLength];
blockStream.read(this.entity);
blockStream.close();
}