Data Send Utils
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.LinkedList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import android.util.Base64;
import android.util.Log;
/**
* Send Data Utils
*
* @author wpc
*
*/
public class DataSendUtils {
public static boolean httpPost(String pathToOurFile, String urlServer,
String formName) {
HttpURLConnection connection = null;
DataOutputStream outputStream = null;
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
int bytesRead, bytesAvailable, bufferSize;
byte[] buffer;
int maxBufferSize = 1 * 1024 * 1024;
boolean sendSuccess = true;
try {
FileInputStream fileInputStream = new FileInputStream(new File(
pathToOurFile));
URL url = new URL(urlServer);
connection = (HttpURLConnection) url.openConnection();
// Allow Inputs & Outputs
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
// Enable POST method
connection.setRequestMethod("POST");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Content-Type",
"multipart/form-data;boundary=" + boundary);
outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(twoHyphens + boundary + lineEnd);
outputStream.flush();
outputStream.writeBytes("Content-Disposition: form-data; name=\""
+ formName + "\";filename=\"" + pathToOurFile + "\""
+ lineEnd);
outputStream.flush();
outputStream.writeBytes(lineEnd);
outputStream.flush();
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
// Read file
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
outputStream.write(buffer, 0, bufferSize);
outputStream.flush();
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
outputStream.writeBytes(lineEnd);
outputStream.flush();
outputStream.writeBytes(twoHyphens + boundary + twoHyphens
+ lineEnd);
outputStream.flush();
fileInputStream.close();
outputStream.close();
connection.getResponseCode();
connection.getResponseMessage();
} catch (Exception ex) {
sendSuccess = false;
} finally {
connection.disconnect();
}
return sendSuccess;
}
/**
* TODO FIX Check the file length, it's long not int.This may lead the
* problem.
*
* @param fileName
* @param url
* @return
*/
public static boolean httpPostBase64(String fileName, String url,
String formKey, String inputName) {
try {
File file = new File(fileName);
FileInputStream in = new FileInputStream(file);
byte[] buffer = new byte[(int) file.length() + 100];
int length = in.read(buffer);
String data = Base64.encodeToString(buffer, 0, length,Base64.DEFAULT);
HttpPost httpRequest = new HttpPost(url);
List<NameValuePair> params = new LinkedList<NameValuePair>();
params.add(new BasicNameValuePair("hl", "en_GB"));
params.add(new BasicNameValuePair("formkey", formKey));
params.add(new BasicNameValuePair(inputName, data));
httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse httpResponse = new DefaultHttpClient()
.execute(httpRequest);
if (httpResponse.getStatusLine().getStatusCode() != 200) {
Log.d("HTTP Response:", url);
Log.d("HTTP Response Code", httpResponse.getStatusLine()
.toString());
return false;
}
} catch (Exception e) {
return false;
}
return true;
}
}
Related examples in the same category