HttpEntity类型有哪些

发布时间:2022-06-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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

/*

  • ====================================================================
  • Licensed to the Apache Software Foundation (ASF) under one
  • or more contributor license agreements. See the NOTICE file
  • distributed with this work for additional information
  • regarding copyright ownership. The ASF licenses this file
  • to you under the Apache License, Version 2.0 (the
  • "License"); you may not use this file except in compliance
  • with the License. You may obtain a copy of the License at
  • http://www.apache.org/licenses/LICENSE-2.0
  • Unless required by applicable law or agreed to in writing,
  • software distributed under the License is distributed on an
  • "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  • KIND, either express or implied. See the License for the
  • specific language governing permissions and limitations
  • under the License.
  • ====================================================================
  • This software consists of voluntary contributions made by many
  • individuals on behalf of the Apache Software Foundation. For more
  • information on the Apache Software Foundation, please see
  • http://www.apache.org/.

*/

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(); }

    /**

    • @deprecated (4.1) Either use {@link #getContent()} and call {@link java.io.InputStream#close()} on that;
    • otherwise call {@link #writeTo(OutputStream)} which is required to free the resources. */ @Deprecated public void consumeContent() throws IOException { wrappedEntity.consumeContent(); }

}

BufferedHttpEntity

是HttpEntityWarpper的子类,可以把不可以重复的实体,实现成可以重复的实体。

它从提供的实体中读取内容,缓存到内容中。

源码如下:

[html] view plain copy

/*

  • ====================================================================
  • Licensed to the Apache Software Foundation (ASF) under one
  • or more contributor license agreements. See the NOTICE file
  • distributed with this work for additional information
  • regarding copyright ownership. The ASF licenses this file
  • to you under the Apache License, Version 2.0 (the
  • "License"); you may not use this file except in compliance
  • with the License. You may obtain a copy of the License at
  • http://www.apache.org/licenses/LICENSE-2.0
  • Unless required by applicable law or agreed to in writing,
  • software distributed under the License is distributed on an
  • "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  • KIND, either express or implied. See the License for the
  • specific language governing permissions and limitations
  • under the License.
  • ====================================================================
  • This software consists of voluntary contributions made by many
  • individuals on behalf of the Apache Software Foundation. For more
  • information on the Apache Software Foundation, please see
  • http://www.apache.org/.

*/

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;

    /**

    • Creates a new buffered entity wrapper.
    • @param entity the entity to wrap, not null
    • @throws IllegalArgumentException if wrapped is null */ public BufferedHttpEntity(final HttpEntity entity) throws IOException { super(entity); if (!entity.isRepeatable() || entity.getContentLength() < 0) { this.buffer = EntityUtils.toByteArray(entity); } else { this.buffer = null; } }

    @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(); } }

    /**

    • Tells that this entity does not have to be chunked.
    • @return false */ @Override public boolean isChunked() { return (buffer == null) && wrappedEntity.isChunked(); }

    /**

    • Tells that this entity is repeatable.
    • @return 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,请注明来意。
标签: