Paste
Pasted as Java by naresh.repalle ( 11 years ago )
package com.example.anroidtest;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import android.os.Environment;
/**
* This utility class provides an abstraction layer for sending multipart HTTP
* POST requests to a web server.
*
* @author www.codejava.net
*
*/
public class MultipartUtility {
private final String boundary;
private static final String LINE_FEED = "\r\n";
private HttpURLConnection httpConn;
private String charset;
private OutputStream outputStream;
private PrintWriter writer;
/**
* This constructor initializes a new HTTP POST request with content type is
* set to multipart/form-data
*
* @param requestURL
* @param charset
* @throws IOException
*/
public MultipartUtility(String requestURL, String charset)
throws IOException {
this.charset = charset;
// creates a unique boundary based on time stamp
boundary = "-------------------------acebdf13572468";
URL url = new URL(requestURL);
httpC url.openConnection();
httpConn.setUseCaches(false);
httpConn.setDoOutput(true); // indicates POST method
httpConn.setDoInput(true);
httpConn.setRequestProperty("Content-Type",
"multipart/form-data; boundary=" + boundary);
httpConn.setRequestProperty("Authorization",
"Basic c3Jpa2FudGgucmF2dWxhQHNob3JlZ3JwLmNvbTp0ZXN0aW5n");
outputStream = httpConn.getOutputStream();
writer = new PrintWriter(new OutputStreamWriter(outputStream, charset),
true);
}
/**
* Adds a form field to the request
*
* @param name
* field name
* @param value
* field value
*/
public void addFormField(String name, String value) {
writer.append("--" + boundary).append(LINE_FEED);
writer.append("Content-Disposition: form-data; name=" + name).append(
LINE_FEED);
writer.append(LINE_FEED);
writer.append(value);
writer.flush();
}
/**
* Adds a upload file section to the request
*
* @param fieldName
* name attribute in <input type="file" name="..." />
* @param uploadFile
* a File to be uploaded
* @throws IOException
*/
public void addFilePart(String fieldName, File uploadFile)
throws IOException {
String fileName = uploadFile.getName();
writer.append("--" + boundary).append(LINE_FEED);
writer.append(
"Content-Disposition: form-data; name=" + fieldName
+ "; filename=" + fileName).append(LINE_FEED);
writer.append("Content-Type: image/png").append(LINE_FEED);
writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED);
writer.append(LINE_FEED);
writer.flush();
FileInputStream inputStream = new FileInputStream(uploadFile);
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.flush();
inputStream.close();
writer.append(LINE_FEED);
writer.flush();
}
/**
* Adds a header field to the request.
*
* @param name
* - name of the header field
* @param value
* - value of the header field
*/
public void addHeaderField(String name, String value) {
writer.append(name + ": " + value).append(LINE_FEED);
writer.flush();
}
/**
* Completes the request and receives response from the server.
*
* @return a list of Strings as response in case the server returned status
* OK, otherwise an exception is thrown.
* @throws IOException
*/
public List<String> finish() throws IOException {
List<String> resp ArrayList<String>();
// writer.append(LINE_FEED).flush();
writer.append("--" + boundary + "--").append(LINE_FEED);
writer.flush();
writer.close();
try {
File newFolder = new File(
Environment.getExternalStorageDirectory(), "TestFolder");
if (!newFolder.exists()) {
newFolder.mkdir();
}
try {
File file = new File(newFolder, "MyTest" + ".txt");
if (file.exists())
file.delete();
file.createNewFile();
FileOutputStream fOut = new FileOutputStream(file);
fOut.write(outputStream.toString().getBytes());
fOut.flush();
fOut.close();
} catch (Exception ex) {
System.out.println("ex: " + ex);
}
} catch (Exception e) {
System.out.println("e: " + e);
}
// checks server's status code first
int status = httpConn.getResponseCode();
String reas
if (status == HttpURLConnection.HTTP_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(
httpConn.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
response.add(line);
}
reader.close();
httpConn.disconnect();
} else {
ByteArrayOutputStream f = new ByteArrayOutputStream();
f.write(outputStream.toString().getBytes());
System.out.println("Request: " + f.toString());
// Error message
BufferedReader reader = new BufferedReader(new InputStreamReader(
httpConn.getErrorStream()));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println("Reason: " + line);
}
reader.close();
throw new IOException("Server returned non-OK status: " + status
+ ", reason: " + reason);
}
return response;
}
}
Revise this Paste