脚本宝典收集整理的这篇文章主要介绍了HttpEntity类型有哪些,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
代表底层流的基本实体。通常是在http报文中获取的实体。他只有一个空参的构造方法。
刚创建时没有内容,长度为负值。需要通过两个方法,把值赋进去。
、、、 /** * BasicHttpEntity * @throws IOException */ public static void testBasicHttpEntity() throws IOException{ InputStream is = null; //BasicHttpEntity这类就是一个输入流的内容包装类,包装内容的相关的编码格式,长度等 BasicHttpEntity entity = new BasicHttpEntity(); //设置内容 entity.setContent(is); //设置长度 entity.setContentLength(is.available()); //没搞懂chunked这个属性啥意思 entity.setChunked(false); }
、、、
ByteArrayEntity
是自我包含的,可重复获得使用的,从指定的字节数组中取出内容的实体。
字节数组是这个实体的构造方法的参数
[html] view plain copy
/** * ByteArrayEntity * @throws IOException / public static void testByteArrayEntity() throws IOException{ ByteArrayEntity entity = new ByteArrayEntity("内容".getBytes()); ByteArrayInputStream is = (ByteArrayInputStream) entity.getContent(); //上面这行代码返回的其实是一个ByteArrayInputStream对象 /public InputStream getContent() { return new ByteArrayInputStream(this.b, this.off, this.len); }*/ }
StringEntity
是自我包含的可重复的实体。通过String创建的实体
有两个构造方法,一个是自Sring为参数的构造方法,一个是以String和字符编码为参数的构造方法。
[html] view plain copy
/** * StringEntity * @throws IOException */ public static void testStringEntity() throws IOException{ StringBuilder sb = new StringBuilder(); //获取系统的信息集合,这个集合是不可以修改的 Map<String, String> nev = System.getenv(); for(Entry<String, String> entry : nev.entrySet()){ sb.append(entry.getKey()).append("=") .append(entry.getValue()).append("n"); } String content = sb.toString(); System.out.println(content); //创建只带字符串参数的 StringEntity entity = new StringEntity(content); //创建带字符创参数和字符编码的 StringEntity entity2 = new StringEntity(content, "UTF-8");
}
InputreamEntity
是流式不可以重复的实体。构造方法是InputStream 和内容长度,内容长度是输入流的长度
[html] view plain copy
/** * InputStreamEntity * @throws IOException */ public static void testInputStreamEntity() throws IOException{ InputStream is = null; //InputStreamEntity严格是对内容和长度相匹配的。用法和BasicHttpEntity类似 InputStreamEntity entity = new InputStreamEntity(is, is.available()); }
FileEntity
自我包含式,可以重复的实体。参数传入文件和文件类型。
[html] view plain copy
/** * FileEntity * @throws IOException */ public static void testFileEntity() throws IOException{ FileEntity entity = new FileEntity(new File(""), ContentType.APPLICATION_FORM_URLENCODED); FileEntity entity2 = new FileEntity(new File(""), "application/java-achive");
}
EntityTemplete
从ContentProducer接口接受内容的实体。
在ContentProducer的实现类中写入想要写入的内容。
[html] view plain copy
/** * EntityTemplate * @throws IOException */ public static void testEntityTemplate() throws IOException{ ContentProducer producer = new ContentProducer() {
@Override
public void writeTo(OutputStream outstream) throws IOException {
outstream.write("这是什么东东》。".getBytes());
}
};
EntityTemplate entity = new EntityTemplate(producer);
entity.writeTo(System.out);
}
HttpEntityWrapper
这个是创建被包装实体的基类,有被包装实体的引用。
相当于实体的代理类,被包装实体是他的一个属性。
下面是这个类的源码:
[html] view plain copy
/*
*/
package org.apache.http.entity;
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;
import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.annotation.NotThreadSafe;
/**
Base class for wrapping entities.
Keeps a {@link #wrappedEntity wrappedEntity} and delegates all
calls to it. Implementations of wrapping entities can derive
from this class and need to override only those methods that
should not be delegated to the wrapped entity.
@since 4.0 */ @NotThreadSafe public class HttpEntityWrapper implements HttpEntity {
/** The wrapped entity. */ protected HttpEntity wrappedEntity;
/**
Creates a new entity wrapper.
@param wrapped the entity to wrap, not null
@throws IllegalArgumentException if wrapped is null */ public HttpEntityWrapper(HttpEntity wrapped) { super();
if (wrapped == null) { throw new IllegalArgumentException ("wrapped entity must not be null"); } wrappedEntity = wrapped;
} // constructor
public boolean isRepeatable() { return wrappedEntity.isRepeatable(); }
public boolean isChunked() { return wrappedEntity.isChunked(); }
public long getContentLength() { return wrappedEntity.getContentLength(); }
public Header getContentType() { return wrappedEntity.getContentType(); }
public Header getContentEncoding() { return wrappedEntity.getContentEncoding(); }
public InputStream getContent() throws IOException { return wrappedEntity.getContent(); }
public void writeTo(OutputStream outstream) throws IOException { wrappedEntity.writeTo(outstream); }
public boolean isStreaming() { return wrappedEntity.isStreaming(); }
/**
}
BufferedHttpEntity
是HttpEntityWarpper的子类,可以把不可以重复的实体,实现成可以重复的实体。
它从提供的实体中读取内容,缓存到内容中。
源码如下:
[html] view plain copy
/*
*/
package org.apache.http.entity;
import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;
import org.apache.http.HttpEntity; import org.apache.http.annotation.NotThreadSafe; import org.apache.http.util.EntityUtils;
/**
A wrapping entity that buffers it content if necessary.
The buffered entity is always repeatable.
If the wrapped entity is repeatable itself, calls are passed through.
If the wrapped entity is not repeatable, the content is read into a
buffer once and provided from there as often as required.
@since 4.0 */ @NotThreadSafe public class BufferedHttpEntity extends HttpEntityWrapper {
private final byte[] buffer;
/**
@Override public long getContentLength() { if (this.buffer != null) { return this.buffer.length; } else { return wrappedEntity.getContentLength(); } }
@Override public InputStream getContent() throws IOException { if (this.buffer != null) { return new ByteArrayInputStream(this.buffer); } else { return wrappedEntity.getContent(); } }
/**
false
*/
@Override
public boolean isChunked() {
return (buffer == null) && wrappedEntity.isChunked();
}/**
true
*/
@Override
public boolean isRepeatable() {
return true;
}@Override public void writeTo(final OutputStream outstream) throws IOException { if (outstream == null) { throw new IllegalArgumentException("Output stream may not be null"); } if (this.buffer != null) { outstream.write(this.buffer); } else { wrappedEntity.writeTo(outstream); } }
// non-javadoc, see interface HttpEntity @Override public boolean isStreaming() { return (buffer == null) && wrappedEntity.isStreaming(); }
} // class BufferedHttpEntity
以上是脚本宝典为你收集整理的HttpEntity类型有哪些全部内容,希望文章能够帮你解决HttpEntity类型有哪些所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。