您可以使用here的最新版本的volley。这是一个非官方镜像,修复了一些小错误,源代码将定期与官方volley存储库同步。
用于 Gradle
compile 'com.mcxiaoke.volley:library:1.0.19'
或者你可以从here下载编译后的版本
现在,您可以在org.apache.http.entity.mime 中的MultipartEntityBuilder 的帮助下,使用下面的附加类使用凌空发出多部分请求,而无需任何已弃用的代码。
CustomMultipartRequest.java
使用示例
//Auth header
Map<String, String> mHeaderPart= new HashMap<>();
mHeaderPart.put("Content-type", "multipart/form-data;");
mHeaderPart.put("access_token", accessToken);
//File part
Map<String, File> mFilePartData= new HashMap<>();
mFilePartData.put("file", new File(mFilePath));
mFilePartData.put("file", new File(mFilePath));
//String part
Map<String, String> mStringPart= new HashMap<>();
mStringPart.put("profile_id","1");
mStringPart.put("imageType", "ProfileImage");
CustomMultipartRequest mCustomRequest = new CustomMultipartRequest(method, mContext, url, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
listener.onResponse(jsonObject);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
listener.onErrorResponse(volleyError);
}
}, mFilePartData, mStringPart, mHeaderPart);
您可以使用httpmime-4.3.5.jar 和httpcore-4.3.2.jar 访问MultipartEntityBuilder 和其他用于发出请求的方法,或者如果您的目标API 23 及以上,则在您的gradle 中添加以下内容。
android {
useLibrary 'org.apache.http.legacy'
}
我使用上述 jar 的任何方式,它在 Android M 中也像魅力一样工作。
更新
请注意,com.mcxiaoke.volley:library:1.0.19 已弃用且不再维护,请使用jCenter 的官方版本。
compile 'com.android.volley:volley:1.0.0'