Mega Code Archive

 
Categories / Android / Network
 

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