1. /*
  2. * $Header: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/RequestEntity.java,v 1.4 2004/05/17 21:46:03 olegk Exp $
  3. * $Revision: 1.4 $
  4. * $Date: 2004/05/17 21:46:03 $
  5. *
  6. * ====================================================================
  7. *
  8. * Copyright 2004 The Apache Software Foundation
  9. *
  10. * Licensed under the Apache License, Version 2.0 (the "License");
  11. * you may not use this file except in compliance with the License.
  12. * You may obtain a copy of the License at
  13. *
  14. * http://www.apache.org/licenses/LICENSE-2.0
  15. *
  16. * Unless required by applicable law or agreed to in writing, software
  17. * distributed under the License is distributed on an "AS IS" BASIS,
  18. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  19. * See the License for the specific language governing permissions and
  20. * limitations under the License.
  21. * ====================================================================
  22. *
  23. * This software consists of voluntary contributions made by many
  24. * individuals on behalf of the Apache Software Foundation. For more
  25. * information on the Apache Software Foundation, please see
  26. * <http://www.apache.org/>.
  27. *
  28. */
  29. package org.apache.commons.httpclient.methods;
  30. import java.io.IOException;
  31. import java.io.OutputStream;
  32. /**
  33. * @since 3.0
  34. */
  35. public interface RequestEntity {
  36. /**
  37. * Tests if {@link #writeRequest(OutputStream)} can be called more than once.
  38. *
  39. * @return <tt>true</tt> if the entity can be written to {@link OutputStream} more than once,
  40. * <tt>false</tt> otherwise.
  41. */
  42. boolean isRepeatable();
  43. /**
  44. * Writes the request entity to the given stream.
  45. * @param out
  46. * @throws IOException
  47. */
  48. void writeRequest(OutputStream out) throws IOException;
  49. /**
  50. * Gets the request entity's length.
  51. * @return either a number >= 0 or
  52. * {@link org.apache.commons.httpclient.methods.EntityEnclosingMethod#CONTENT_LENGTH_CHUNKED}
  53. */
  54. long getContentLength();
  55. /**
  56. * Gets the entity's content type. This content type will be used as the value for the
  57. * "Content-Type" header.
  58. * @return the entity's content type
  59. * @see org.apache.commons.httpclient.HttpMethod#setRequestHeader(String, String)
  60. */
  61. String getContentType();
  62. }