Java tutorial
package org.apache.http.entity; import com.newrelic.agent.android.analytics.AnalyticAttribute; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.http.annotation.NotThreadSafe; import org.apache.http.util.Args; import org.apache.http.util.Asserts; @NotThreadSafe public class BasicHttpEntity extends AbstractHttpEntity { private InputStream content; private long length; public BasicHttpEntity() { this.length = -1; } public long getContentLength() { return this.length; } public InputStream getContent() throws IllegalStateException { Asserts.check(this.content != null, "Content has not been provided"); return this.content; } public boolean isRepeatable() { return false; } public void setContentLength(long j) { this.length = j; } public void setContent(InputStream inputStream) { this.content = inputStream; } public void writeTo(OutputStream outputStream) throws IOException { Args.notNull(outputStream, "Output stream"); InputStream content = getContent(); try { byte[] bArr = new byte[AnalyticAttribute.ATTRIBUTE_VALUE_MAX_LENGTH]; while (true) { int read = content.read(bArr); if (read == -1) { break; } outputStream.write(bArr, 0, read); } } finally { content.close(); } } public boolean isStreaming() { return this.content != null; } }