对于httpclient上传文件的封装

来源:互联网 发布:xoi linux 编辑:程序博客网 时间:2024/06/06 20:37

上一篇文章写了如何使用httpclient上传文件到服务器。地址 博客地址

这篇来对上一篇的上传文件写一个简单的封装的工具类。


public class HttpUtils {private static HttpClient httpClient = new DefaultHttpClient();/** * 使用post方式访问指定URL * @param url 需要访问的URL * @param paramsMap 参数(形式 key:String -> value:Object) * @return 返回服务器返回的文本。(注:对于返回其他类型数据的此方法不适用) * @throws ClientProtocolException * @throws IOException */public static String post(String url,Map<String, Object> paramsMap) throws ClientProtocolException, IOException{HttpPost httpPost = new HttpPost(url);MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();//填充参数Set<String> keySet = paramsMap.keySet();for(String key:keySet){Object obj = paramsMap.get(key);if(obj instanceof File){ //参数是File 类型File file = (File) obj;entityBuilder.addPart(key, new FileBody(file));}if(obj instanceof String){ //参数是String 类型String value = (String) obj;entityBuilder.addPart(key, new StringBody(value,ContentType.DEFAULT_TEXT));}}httpPost.setEntity(entityBuilder.build());HttpResponse response = httpClient.execute(httpPost);if(response.getStatusLine().getStatusCode() == 200){HttpEntity entity = response.getEntity();String result = EntityUtils.toString(entity);return result;}return null;}}



使用示例:

private void uploadFileByHttpUtils(String url,File file,String fileName){Map<String, Object> paramsMap = new HashMap<String, Object>();paramsMap.put("file", file);paramsMap.put("fileName", fileName);try {String josn = HttpUtils.post(url, paramsMap);Log.i(TAG, josn);} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}


是不是封装后代码简洁多了。

0 0