OkHttp可以作为Volley底层传输协议,速度更快,传大量图片建议使用。OkHttp更多功能请看OkHttp的使用
xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...
xUtils一共有4大功能:注解模块,网络模块,图片加载模块,数据库模块。相关请看xUtils框架的使用博客
使用Volley上传,猪哟是继承volley的Request类,然后通过使用httpmim的MultipartEntity类对文件参数进行封装。
Volley更多功能请看Volley框架使用
所需的jar包:
httpclient-4.3.5.jar,android-async-http-1.4.4.jar
httpcore-4.3.2.jar, httpmime-4.3.5
okhttp.jar,okio.jar,volley.jar,xUtils-2.6.2.jar
OkHttp:
private static final Handler handler = new Handler(Looper.getMainLooper()); private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/*"); private static final OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { okhttp3.Request request = chain.request().newBuilder() .build(); return chain.proceed(request); } }).readTimeout(15, TimeUnit.SECONDS)// 设置读取超时时间 .writeTimeout(15, TimeUnit.SECONDS)// 设置写的超时时间 .connectTimeout(15, TimeUnit.SECONDS)// 设置连接超时时间 .build(); // 上传图片公有方法 private final static void uploadImgAndParameter(Map<String, Object> map, String url) { // mImgUrls为存放图片的url集合 MultipartBody.Builder builder = new MultipartBody.Builder() .setType(MultipartBody.FORM); if (null != map) { for (Map.Entry<String, Object> entry : map.entrySet()) { if (entry.getValue() != null) { if (entry.getValue() instanceof File) { File f = (File) entry.getValue(); builder.addFormDataPart(entry.getKey(), f.getName(), RequestBody.create(MEDIA_TYPE_PNG, f)); } else { builder.addFormDataPart(entry.getKey(), entry .getValue().toString()); } } } } // 创建RequestBody RequestBody body = builder.build(); final okhttp3.Request request = new okhttp3.Request.Builder().url(url)// 地址 .post(body)// 添加请求体 .build(); client.newCall(request).enqueue(new okhttp3.Callback() { @Override public void onResponse(Call call, final Response response) throws IOException { final String data = response.body().string(); Log.i(TAG, "上传照片成功-->" + data); call.cancel();// 上传成功取消请求释放内存 } @Override public void onFailure(Call call, final IOException e) { Log.i(TAG, "上传失败-->" + e.getMessage()); call.cancel();// 上传失败取消请求释放内存 } }); }
XUtils:
HttpUtils http = new HttpUtils(); RequestParams params = new RequestParams(); params.addBodyParameter("c", "comment"); params.addBodyParameter("a", "add"); params.addBodyParameter("uid", "1000191"); params.addBodyParameter("dataid", "1114"); params.addBodyParameter("message", "你好"); params.addBodyParameter("datatype", "goodsid"); for (int i = 0; i < 2; i++) { params.addBodyParameter("filedata" + i, file[i]); } http.send(HttpRequest.HttpMethod.POST, url, params, new RequestCallBack<String>() { @Override public void onFailure(HttpException arg0, String arg1) { } @Override public void onSuccess(ResponseInfo<String> arg0) { Log.i(TAG, arg0.result.toString()); } });
Volley:
public static void addPutUploadFileRequest(final Map<String, File> files, final Map<String, String> params, final Listener<String> responseListener, final ErrorListener errorListener) { if (null == url || null == responseListener) { return; } MultiPartStringRequest multiPartRequest = new MultiPartStringRequest( Request.Method.POST, url, responseListener, errorListener) { @Override public Map<String, File> getFileUploads() { return files; } @Override public Map<String, String> getStringUploads() { return params; } }; mSingleQueue.add(multiPartRequest); } Listener<JSONObject> mResonseListener = new Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.i(TAG + "1", response.toString()); } }; Listener<String> mResonseListenerString = new Listener<String>() { @Override public void onResponse(String response) { Log.i(TAG + "2", response.toString()); } }; ErrorListener mErrorListener = new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { if (error != null) { if (error.networkResponse != null) Log.i(TAG + "3", " error " + new String(error.networkResponse.data)); } } };
不要忘记在AndroidManifest.xml加权限哦!
由于代码太多,完整代码未给出,源码直接下载即可
相关推荐
为了简化这一过程,开发者通常会使用第三方网络框架,例如Volley、xUtils和OkHttp。这些框架提供了高效、易用的API,帮助开发者快速实现网络数据的获取和传输。接下来,我们将详细讨论这三个著名的网络库。 1. **...
网络请求框架volley-master网络请求框架volley-master
3. Android Tipshttp://dev.classmethod.jp/smartphone/android/android-tips-51-volley/ 4. Google I/O 2013 – Android : Volley: Easy, Fast Networking for Android ...
Volley和OkHttp是Android平台上的两种常用的网络请求库,它们在进行网络数据通信时扮演着重要的角色。这里我们详细探讨这两个库的核心功能、特点以及它们的使用。 Volley是Google在2013年I/O大会上推出的一款网络...
在 Android Studio 中,你可以直接引入 `volley.jar` 包来快速实现网络通信功能,无需进行额外的压缩或解压操作。 Volley 的核心优势在于它的设计理念,它对网络请求进行了优化,提供了异步处理、缓存机制以及错误...
本篇文章将详细讲解Volley、OkHttp和Retrofit这三种常用的网络请求库的基本用法,帮助开发者更好地理解和选择适合自己的请求方式。 **Volley** Volley是由Google官方推出的网络请求库,它专注于Android平台,提供...
1. **请求队列**:Volley使用RequestQueue作为所有网络请求的入口,它可以管理多个并发请求,按照优先级和依赖关系进行调度。RequestQueue允许开发者轻松地添加、取消和控制请求的执行顺序。 2. **网络接口**:...
3. "更多源码免费下载.url" - 这可能是一个链接,提供更多的Android源码或者Volley相关资源的下载途径。 4. "volley-demo" - 这很可能是一个包含Volley框架实际应用的示例项目,初学者可以通过分析和运行这个项目来...
本篇将重点讲解如何利用Volley库来实现图片的上传功能,包括单张图片和多张图片的上传。 首先,我们需要了解Volley中的`RequestQueue`是处理所有网络请求的核心组件。创建一个`RequestQueue`实例后,我们可以向其...
Volley和OkHttp是两种广泛使用的网络请求库,在Android应用开发中扮演着重要角色。Volley是由Google开发的网络通信库,它强调了快速响应和轻量级的特性,适合处理大量的小数据请求,如获取JSON数据或者图片加载。而...
A http request engine based on Volley and OkHttp, giving up Apache HttpClient request. supports image loading, restful api requesting, and file downloading. READ MORE Dependency binary on jcenter ...
Android Networking I: OkHttp, Volley and Gson This is a sample app which demonstrates and shows what it's explained in a Medium article about networking in Android. Check out the next article for ...
- **多线程支持**:Volley使用RequestQueue管理网络请求,内部实现异步处理,确保UI线程不被阻塞。 2. **Volley的基本组件**: - **RequestQueue**:这是Volley的核心,负责管理所有网络请求,调度它们的执行顺序...
在“Volley-ImageLoader-Demo”中,我们主要探讨的是如何利用Volley框架中的ImageLoader组件来加载网络上的图片。下面将详细介绍Volley的ImageLoader及其在示例中的应用。 一、Volley框架 Volley是一个轻量级的...
- **图片加载**:Volley 可以配合 Glide 或 Picasso 实现图片的高效加载。 通过研究“android-volley-master”源代码,开发者可以深入了解 Volley 的工作原理,进行性能优化,或者定制适合自己项目的网络库。同时...
功能集: - `OkHttp` + `okio` 集成以实现快速联网 - 少数`Gson` 请求 - 少数`Multipart` 请求 - 在新请求中添加了自定义标头和参数支持 - 添加了默认的 `LruBitmapCache` 实现。 - 只需扩展 `AbstractVolleyManager...
google出的最新版volley的jar包,可以直接导入工程使用。
AndroidVolley-masterAndroidVolley-masterAndroidVolley-
volley-1.0.11.jar, 直接引入