類似于Ruby,在上面調試成功後,將功能遷移到了Android應用上面。
|
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; /** * 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) { 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); /* * NameValuePair实现请求参数的封装 */ List<NameValuePair> params = new LinkedList<NameValuePair>(); params.add(new BasicNameValuePair("data", data)); /* 添加请求参数到请求对象 */ httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); /* 发送请求并等待响应 */ HttpResponse httpResponse = new DefaultHttpClient() .execute(httpRequest); /* 若状态码为200 ok */ if (httpResponse.getStatusLine().getStatusCode() != 200 ) { Log.d( "Code" , httpResponse.getStatusLine().toString()); return false ; } } catch (Exception e) { for (StackTraceElement s:e.getStackTrace()) Log.d( "Exception" ,s.toString()); Log.d( "Exception" ,e.getLocalizedMessage()); return false ; } return true ; } |
全站熱搜
留言列表