在android中使用HTTPClient以post方法发送二进制文件
来源:互联网 发布:java线程锁 编辑:程序博客网 时间:2024/05/16 06:52
<span style="font-family: Arial, Helvetica, sans-serif;"></span><p>首先,在propotities-> Java build path -> Libraries中add external jars中引入httpclient-4.2.5.jar和httpmime-4.2.5.jar </p><p>然后再将这两个包拷贝到项目工程下的libs目录下;</p>
<span style="font-family: Arial, Helvetica, sans-serif;">import java.io.ByteArrayOutputStream;</span>
import java.io.IOException;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.params.HttpClientParams;import org.apache.http.entity.mime.HttpMultipartMode;import org.apache.http.entity.mime.MultipartEntity;import org.apache.http.entity.mime.content.ByteArrayBody;import org.apache.http.entity.mime.content.StringBody;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.params.BasicHttpParams;import org.apache.http.params.HttpConnectionParams;import org.apache.http.params.HttpParams;import org.apache.http.params.HttpProtocolParams;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.util.Log;/** * HTTP请求辅助类,用于人脸识别过程中向face++发送请求 * @author witness * */public class HTTPUtils {private static HttpParams httpParams = new BasicHttpParams();private static HttpClient httpClient = getHttpClient();public static String doGet(String url, Map params){String paramStr = ""; Iterator iter = params.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); paramStr += paramStr = "&" + key + "=" + val; } // if (!paramStr.equals("")) { // paramStr = paramStr.replaceFirst("&", "?"); // url += paramStr; // } HttpGet httpRequest = new HttpGet(url); String strResult = "doGetError"; try { /* 发送请求并等待响应 */ HttpResponse httpResponse = httpClient.execute(httpRequest); /* 若状态码为200 ok */ if (httpResponse.getStatusLine().getStatusCode() == 200) { /* 读返回数据 */ strResult = EntityUtils.toString(httpResponse.getEntity()); } else { strResult = "Error Response: " + httpResponse.getStatusLine().toString(); } } catch (ClientProtocolException e) { strResult = e.getMessage().toString(); e.printStackTrace(); } catch (IOException e) { strResult = e.getMessage().toString(); e.printStackTrace(); } catch (Exception e) { strResult = e.getMessage().toString(); e.printStackTrace(); } Log.v("strResult", strResult); return strResult; }@SuppressWarnings("deprecation")public static String doPost(String url, byte[] imgData) { /* 建立HTTPPost对象 */ HttpPost httpRequest = new HttpPost(url); String strResult = "doPostError"; try { MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); /* 添加请求参数到请求对象 */ ByteArrayBody img = new ByteArrayBody(imgData, "img"); StringBody key = new StringBody(Constants.API_KEY); StringBody secret = new StringBody(Constants.API_SECRET); entity.addPart("img", img); entity.addPart("api_key", key); entity.addPart("api_secret", secret); httpRequest.setEntity(entity); /* 发送请求并等待响应 */ HttpResponse httpResponse = httpClient.execute(httpRequest); /* 若状态码为200 ok */ if (httpResponse.getStatusLine().getStatusCode() == 200) { /* 读返回数据 */ strResult = EntityUtils.toString(httpResponse.getEntity()); } else { strResult = "Error Response: " + httpResponse.getStatusLine().toString(); } } catch (ClientProtocolException e) { strResult = e.getMessage().toString(); e.printStackTrace(); } catch (IOException e) { strResult = e.getMessage().toString(); e.printStackTrace(); } catch (Exception e) { strResult = e.getMessage().toString(); e.printStackTrace(); } Log.v("strResult", strResult); return strResult; }private static HttpClient getHttpClient() { // 设置连接超时和 Socket 超时,以及 Socket 缓存大小 HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSocketBufferSize(httpParams, 8192); // 设置重定向,缺省为 true HttpClientParams.setRedirecting(httpParams, true); // 设置 user agent String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6"; HttpProtocolParams.setUserAgent(httpParams, userAgent); // 创建一个 HttpClient 实例 // 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient // 中的用法,在 Android 1.5 中我们需要使用 Apache 的缺省实现 DefaultHttpClient httpClient = new DefaultHttpClient(httpParams); return httpClient; } public static byte[] getBitmapByte(Bitmap bitmap){ ByteArrayOutputStream out = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); try { out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } return out.toByteArray(); } public static Bitmap getBitmapFromByte(byte[] temp){ if(temp != null){ Bitmap bitmap = BitmapFactory.decodeByteArray(temp, 0, temp.length); return bitmap; }else{ return null; } } }
0 0
- 在android中使用HTTPClient以post方法发送二进制文件
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- android使用apache httpclient发送post请求
- httpclient以post方式发送body
- 使用post()方法以POST方式从服务器发送数据
- 使用HttpClient发送POST请求
- 使用httpclient发送post请求
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- Android使用Apache HttpClient发送GET、POST请求
- POJ-3320 Jessica's Reading Problem
- BaseDaoImpl得到泛型化超类
- hibernate 的hibernate.cfg.xml标准配置文档
- 事件驱动模型
- git:fatal: Not a git repository (or any of the parent directories): .git
- 在android中使用HTTPClient以post方法发送二进制文件
- Struts2工作原理
- 【最大子矩阵和】poj 1050 To the Max
- 周赛 4 【kMP&&回文串】
- 杭电1017——A Mathematical Curiosity(简单题)
- 消息队列初体验
- CentOS下 tomcat
- 自动化测试
- 盲人摸象——iOS简单应用ToDoList之sqlite数据本地化