commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthew Albright <mattalbri...@yahoo.com>
Subject Re: HttpClient: Code for a multipart POST method
Date Sat, 19 Jan 2002 01:13:48 GMT
Hmmm, my message with the tarball attached didn't seem to go through.  
Here's a patch instead:

diff -crN
commons-httpclient/src/java/org/apache/commons/httpclient/methods/MultipartPostMethod.java
commons-httpclient-mine/src/java/org/apache/commons/httpclient/methods/MultipartPostMethod.java
*** commons-httpclient/src/java/org/apache/commons/httpclient/methods/MultipartPostMethod.java
Wed
Dec 31 16:00:00 1969
---
commons-httpclient-mine/src/java/org/apache/commons/httpclient/methods/MultipartPostMethod.java
Fri Jan 18 13:20:19 2002
***************
*** 0 ****
--- 1,235 ----
+ /*
+  * $Header: $
+  * $Revision: $
+  * $Date: $
+  * ====================================================================
+  *
+  * The Apache Software License, Version 1.1
+  *
+  * Copyright (c) 1999 The Apache Software Foundation.  All rights
+  * reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  *
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  *
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in
+  *    the documentation and/or other materials provided with the
+  *    distribution.
+  *
+  * 3. The end-user documentation included with the redistribution, if
+  *    any, must include the following acknowlegement:
+  *       "This product includes software developed by the
+  *        Apache Software Foundation (http://www.apache.org/)."
+  *    Alternately, this acknowlegement may appear in the software itself,
+  *    if and wherever such third-party acknowlegements normally appear.
+  *
+  * 4. The names "The Jakarta Project", "HttpClient", and "Apache Software
+  *    Foundation" must not be used to endorse or promote products derived
+  *    from this software without prior written permission. For written
+  *    permission, please contact apache@apache.org.
+  *
+  * 5. Products derived from this software may not be called "Apache"
+  *    nor may "Apache" appear in their names without prior written
+  *    permission of the Apache Group.
+  *
+  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  * SUCH DAMAGE.
+  * ====================================================================
+  *
+  * 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/>.
+  *
+  * [Additional notices, if required by prior licensing conditions]
+  *
+  */
+ 
+ package org.apache.commons.httpclient.methods;
+ 
+ import java.util.List;
+ import java.util.ArrayList;
+ import java.util.Iterator;
+ import java.io.File;
+ import java.io.OutputStream;
+ import java.io.IOException;
+ import java.io.FileNotFoundException;
+ import org.apache.commons.httpclient.*;
+ import org.apache.commons.httpclient.methods.multipart.*;
+ 
+ /**
+  * POST Method for Multipart encoded forms.
+  *
+  * @author <a href="mailto:mattalbright@yahoo.com">Matthew Albright</a>
+  */
+ public class MultipartPostMethod extends GetMethod 
+ {
+     private List parameters = new ArrayList();
+ 
+     /**
+      * No-arg constructor.
+      */
+     public MultipartPostMethod() 
+     {
+         super();
+     }
+ 
+     /**
+      * Path-setting constructor.
+      * @param path the path to request
+      */
+     public MultipartPostMethod(String path) 
+     {
+         super(path);
+     }
+ 
+     /**
+      * Constructor.
+      * @param path the path to request
+      * @param tempDir directory to store temp files in
+      */
+     public MultipartPostMethod(String path, String tempDir) 
+     {
+         super(path, tempDir);
+     }
+ 
+     /**
+      * Constructor.
+      * @param path the path to request
+      * @param tempDir directory to store temp files in
+      * @param tempFile file to store temporary data in
+      */
+     public MultipartPostMethod(String path, String tempDir, String tempFile) 
+     {
+         super(path, tempDir, tempFile);
+     }
+ 
+ 
+     /**
+      * Returns <tt>"POST"</tt>.
+      * @return <tt>"POST"</tt>
+      */
+     public String getName() 
+     {
+         return "POST";
+     }
+ 
+     /**
+      * Clear my request body.
+      */
+     public void recycle() 
+     {
+         super.recycle();
+         
+         parameters.clear();
+     }
+ 
+ 
+     public void addParameter(String parameterName, String parameterValue) 
+     {
+         Part param = new StringPart(parameterName, parameterValue);
+         
+         parameters.add(param);
+     }
+ 
+ 
+     public void addParameter(String parameterName, File parameterFile) 
+          throws FileNotFoundException
+     {
+         Part param = new FilePart(parameterName, parameterFile);
+         
+         parameters.add(param);
+     }
+ 
+ 
+     protected void addRequestHeaders(HttpState state, HttpConnection conn) 
+                                     throws IOException, HttpException 
+     {
+         super.addRequestHeaders(state,conn);
+         
+         if (! parameters.isEmpty()) 
+         {
+             setRequestHeader("Content-Type", 
+                  "multipart/form-data; boundary=" + Part.getBoundary());
+         }
+     }
+ 
+     /**
+      * Override method of {@link HttpMethodBase}
+      * to write request parameters as the
+      * request body.
+      */
+     protected boolean writeRequestBody(HttpState state, HttpConnection conn) 
+                                       throws IOException, HttpException 
+     {
+         OutputStream out = conn.getRequestOutputStream();
+         
+         for (Iterator it = parameters.iterator(); it.hasNext();)
+         {
+             Part part = (Part)it.next();
+             
+             part.send(out);
+         }
+         
+         Part.sendLastBoundary(out);
+         
+         out.close();
+             
+         return(true);
+     }
+ 
+     /**
+      * Override method of {@link HttpMethodBase}
+      * to return the length of the request body.
+      *
+      * Once this method has been invoked,
+      * the request parameters cannot be altered
+      * until I am {@link #recycle recycled}.
+      */
+     protected int getRequestContentLength()
+     {
+         long length = 0;
+         
+         try
+         {
+             for (Iterator it = parameters.iterator(); it.hasNext();)
+             {
+                 Part part = (Part)it.next();
+             
+                 length += part.length();
+             }
+ 
+             length += Part.lengthOfLastBoundary();
+         }
+         catch (IOException e)
+         {
+             // Can't throw an IOException and still override
+             throw new RuntimeException(e.toString());
+         }
+         
+         // Chop the length to the max int value.
+         if (length <= Integer.MAX_VALUE)
+         {
+             return((new Long(length)).intValue());
+         }
+         else
+         {
+             return(Integer.MAX_VALUE);
+         }
+     }
+ }
diff -crN
commons-httpclient/src/java/org/apache/commons/httpclient/methods/multipart/FilePart.java
commons-httpclient-mine/src/java/org/apache/commons/httpclient/methods/multipart/FilePart.java
*** commons-httpclient/src/java/org/apache/commons/httpclient/methods/multipart/FilePart.java
Wed
Dec 31 16:00:00 1969
--- commons-httpclient-mine/src/java/org/apache/commons/httpclient/methods/multipart/FilePart.java
Fri Jan 18 13:20:51 2002
***************
*** 0 ****
--- 1,172 ----
+ /*
+  * $Header: $
+  * $Revision: $
+  * $Date: $
+  * ====================================================================
+  *
+  * The Apache Software License, Version 1.1
+  *
+  * Copyright (c) 1999 The Apache Software Foundation.  All rights
+  * reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  *
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  *
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in
+  *    the documentation and/or other materials provided with the
+  *    distribution.
+  *
+  * 3. The end-user documentation included with the redistribution, if
+  *    any, must include the following acknowlegement:
+  *       "This product includes software developed by the
+  *        Apache Software Foundation (http://www.apache.org/)."
+  *    Alternately, this acknowlegement may appear in the software itself,
+  *    if and wherever such third-party acknowlegements normally appear.
+  *
+  * 4. The names "The Jakarta Project", "HttpClient", and "Apache Software
+  *    Foundation" must not be used to endorse or promote products derived
+  *    from this software without prior written permission. For written
+  *    permission, please contact apache@apache.org.
+  *
+  * 5. Products derived from this software may not be called "Apache"
+  *    nor may "Apache" appear in their names without prior written
+  *    permission of the Apache Group.
+  *
+  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  * SUCH DAMAGE.
+  * ====================================================================
+  *
+  * 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/>.
+  *
+  * [Additional notices, if required by prior licensing conditions]
+  *
+  */
+ 
+ package org.apache.commons.httpclient.methods.multipart;
+ 
+ import java.io.File;
+ import java.io.FileInputStream;
+ import java.io.InputStream;
+ import java.io.OutputStream;
+ import java.io.FileNotFoundException;
+ import java.io.IOException;
+ 
+ 
+ /**
+  *
+  * This class implements a part of a Multipart post object that
+  * consists of a file.  It makes every effort to not parse or store
+  * any of the data in the file, in order to not munge a binary file,
+  * and to not break if the file is huge.  Hence, use a simple byte
+  * array, and just shove it down the OutputStream.
+  *
+  * @author <a href="mailto:mattalbright@yahoo.com">Matthew Albright</a>
+  *
+  */
+ public class FilePart extends Part
+ {
+     static int MAX_BUFF_SIZE = 1 * 1024 * 1024;  // 1 MiBs
+     
+     private String name;
+     private File file;
+     private int buff_size;
+     
+     
+     public FilePart(String name, File file) throws FileNotFoundException
+     {
+         if (! file.isFile())
+         {
+             throw new FileNotFoundException("File is not a normal file.");
+         }
+     
+         if (! file.canRead())
+         {
+             throw new FileNotFoundException("File is not readable.");
+         }
+     
+         this.name = name;
+         this.file = file;
+     }
+     
+     protected void sendHeader(OutputStream out) 
+          throws IOException
+     {
+         super.sendHeader(out);
+         sendFilename(out);
+         sendContentType(out);
+     }
+     
+     protected void sendFilename(OutputStream out) 
+          throws IOException
+     {
+         String filename = "; filename=\"" + file.getName() + "\"";
+     
+         out.write(filename.getBytes());
+     }
+ 
+     
+     protected void sendContentType(OutputStream out) 
+          throws IOException
+     {
+         out.write(CRLF_bytes);
+         out.write("Content-Type: application/octet-stream".getBytes());
+     }    
+ 
+     public String getName()  { return(name); }
+     
+     protected void sendData(OutputStream out) throws IOException
+     {
+         byte[] buff;
+         
+         if (lengthOfData() > MAX_BUFF_SIZE)
+         {
+             buff = new byte[MAX_BUFF_SIZE];
+         }
+         else
+         {
+             buff = new byte[(new Long(lengthOfData())).intValue()];
+         }
+         
+         InputStream in;
+         
+         try
+         {
+             in = new FileInputStream(file);
+         
+             int len;
+ 
+             while ((len = in.read(buff)) != -1)
+             {
+                 out.write(buff, 0, len);
+             }
+         }
+         catch (FileNotFoundException e)
+         {
+             throw new IOException(e.toString());
+         }
+     }
+     
+     protected long lengthOfData() throws IOException
+     {
+         return(file.length());
+     }
+ }
+ 
diff -crN commons-httpclient/src/java/org/apache/commons/httpclient/methods/multipart/Part.java
commons-httpclient-mine/src/java/org/apache/commons/httpclient/methods/multipart/Part.java
*** commons-httpclient/src/java/org/apache/commons/httpclient/methods/multipart/Part.java
Wed Dec
31 16:00:00 1969
--- commons-httpclient-mine/src/java/org/apache/commons/httpclient/methods/multipart/Part.java
Fri
Jan 18 13:20:38 2002
***************
*** 0 ****
--- 1,205 ----
+ /*
+  * $Header: $
+  * $Revision: $
+  * $Date: $
+  * ====================================================================
+  *
+  * The Apache Software License, Version 1.1
+  *
+  * Copyright (c) 1999 The Apache Software Foundation.  All rights
+  * reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  *
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  *
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in
+  *    the documentation and/or other materials provided with the
+  *    distribution.
+  *
+  * 3. The end-user documentation included with the redistribution, if
+  *    any, must include the following acknowlegement:
+  *       "This product includes software developed by the
+  *        Apache Software Foundation (http://www.apache.org/)."
+  *    Alternately, this acknowlegement may appear in the software itself,
+  *    if and wherever such third-party acknowlegements normally appear.
+  *
+  * 4. The names "The Jakarta Project", "HttpClient", and "Apache Software
+  *    Foundation" must not be used to endorse or promote products derived
+  *    from this software without prior written permission. For written
+  *    permission, please contact apache@apache.org.
+  *
+  * 5. Products derived from this software may not be called "Apache"
+  *    nor may "Apache" appear in their names without prior written
+  *    permission of the Apache Group.
+  *
+  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  * SUCH DAMAGE.
+  * ====================================================================
+  *
+  * 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/>.
+  *
+  * [Additional notices, if required by prior licensing conditions]
+  *
+  */
+ 
+ package org.apache.commons.httpclient.methods.multipart;
+ 
+ import java.io.OutputStream;
+ import java.io.ByteArrayOutputStream;
+ import java.io.IOException;
+ 
+ /**
+  *
+  * Abstract class for one Part of a multipart post object.
+  *
+  * @author <a href="mailto:mattalbright@yahoo.com">Matthew Albright</a>
+  *
+  */
+ public abstract class Part
+ {
+     static String boundary = "----------------314159265358979323846";
+     static byte[] boundary_bytes = boundary.getBytes();
+     static String CRLF = "\r\n";
+     static byte[] CRLF_bytes = CRLF.getBytes();
+     static String extra = "--";
+     static byte[] extra_bytes = extra.getBytes();
+     
+     public static String getBoundary()  { return(boundary); }
+     
+     public static void sendLastBoundary(OutputStream out)
+          throws IOException
+     {
+         out.write(extra_bytes);
+         out.write(boundary_bytes);
+         out.write(extra_bytes);
+         out.write(CRLF_bytes);
+     }
+     
+     public static int lengthOfLastBoundary()
+          throws IOException
+     {
+         ByteArrayOutputStream out = new ByteArrayOutputStream();
+         
+         sendLastBoundary(out);
+         
+         return(out.size());
+     }
+     
+     public abstract String getName();
+     
+     protected void sendStart(OutputStream out) 
+          throws IOException
+     {
+         out.write(extra_bytes);
+         out.write(boundary_bytes);
+         out.write(CRLF_bytes);
+     }
+     
+     protected int lengthOfStart()
+          throws IOException
+     {
+         ByteArrayOutputStream out = new ByteArrayOutputStream();
+         
+         sendStart(out);
+         
+         return(out.size());
+     }
+     
+     protected void sendHeader(OutputStream out) 
+          throws IOException
+     {
+         String content_dispos = 
+              "Content-Disposition: form-data; name=\"" + getName() + "\"";
+     
+         out.write(content_dispos.getBytes());
+     }
+     
+     protected int lengthOfHeader()
+          throws IOException
+     {
+         ByteArrayOutputStream out = new ByteArrayOutputStream();
+         
+         sendHeader(out);
+         
+         return(out.size());
+     }
+     
+     
+     protected void sendEndOfHeader(OutputStream out) 
+          throws IOException
+     {
+         out.write(CRLF_bytes);
+         out.write(CRLF_bytes);
+     }
+     
+     protected int lengthOfEndOfHeader()
+          throws IOException
+     {
+         ByteArrayOutputStream out = new ByteArrayOutputStream();
+         
+         sendEndOfHeader(out);
+         
+         return(out.size());
+     }
+     
+     
+     protected abstract void sendData(OutputStream out) throws IOException;
+     
+     protected abstract long lengthOfData() throws IOException;
+     
+     
+     protected void sendEnd(OutputStream out) 
+          throws IOException
+     {
+         out.write(CRLF_bytes);
+     }
+     
+     protected int lengthOfEnd()
+          throws IOException
+     {
+         ByteArrayOutputStream out = new ByteArrayOutputStream();
+         
+         sendEnd(out);
+         
+         return(out.size());
+     }
+     
+     /* The following 2 methods don't need to be final, but they DO need
+        to be overridden as a pair, and the only way to make sure of that
+        is to make sure they AREN'T overridden. */
+     final public void send(OutputStream out) throws IOException
+     {
+         sendStart(out);
+         sendHeader(out);
+         sendEndOfHeader(out);
+         sendData(out);
+         sendEnd(out);
+     }
+     
+     final public long length() throws IOException
+     {
+         return(lengthOfStart() + 
+                lengthOfHeader() + 
+                lengthOfEndOfHeader() +
+                lengthOfData() + 
+                lengthOfEnd());
+     }
+ }
diff -crN
commons-httpclient/src/java/org/apache/commons/httpclient/methods/multipart/StringPart.java
commons-httpclient-mine/src/java/org/apache/commons/httpclient/methods/multipart/StringPart.java
*** commons-httpclient/src/java/org/apache/commons/httpclient/methods/multipart/StringPart.java
Wed Dec 31 16:00:00 1969
---
commons-httpclient-mine/src/java/org/apache/commons/httpclient/methods/multipart/StringPart.java
Fri Jan 18 11:42:08 2002
***************
*** 0 ****
--- 1,95 ----
+ /*
+  * $Header: $
+  * $Revision: $
+  * $Date: $
+  * ====================================================================
+  *
+  * The Apache Software License, Version 1.1
+  *
+  * Copyright (c) 1999 The Apache Software Foundation.  All rights
+  * reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  *
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  *
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in
+  *    the documentation and/or other materials provided with the
+  *    distribution.
+  *
+  * 3. The end-user documentation included with the redistribution, if
+  *    any, must include the following acknowlegement:
+  *       "This product includes software developed by the
+  *        Apache Software Foundation (http://www.apache.org/)."
+  *    Alternately, this acknowlegement may appear in the software itself,
+  *    if and wherever such third-party acknowlegements normally appear.
+  *
+  * 4. The names "The Jakarta Project", "HttpClient", and "Apache Software
+  *    Foundation" must not be used to endorse or promote products derived
+  *    from this software without prior written permission. For written
+  *    permission, please contact apache@apache.org.
+  *
+  * 5. Products derived from this software may not be called "Apache"
+  *    nor may "Apache" appear in their names without prior written
+  *    permission of the Apache Group.
+  *
+  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  * SUCH DAMAGE.
+  * ====================================================================
+  *
+  * 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/>.
+  *
+  * [Additional notices, if required by prior licensing conditions]
+  *
+  */
+ 
+ package org.apache.commons.httpclient.methods.multipart;
+ 
+ import java.io.OutputStream;
+ import java.io.IOException;
+ 
+ /**
+  * Simple string parameter for a multipart post
+  *
+  * @author <a href="mailto:mattalbright@yahoo.com">Matthew Albright</a>
+  */
+ public class StringPart extends Part
+ {
+     private String name;
+     private String value;
+     
+     public StringPart(String name, String value)
+     {
+         this.name = name;
+         this.value = value;
+     }
+ 
+     public String getName()  { return(name); }
+     
+     protected void sendData(OutputStream out) throws IOException
+     {
+         out.write(value.getBytes());    
+     }
+     
+     protected long lengthOfData() throws IOException
+     {
+         return(value.getBytes().length);
+     }
+ }


__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message