java - example - volley android studio
¿Subiendo múltiples imágenes con volley? (2)
He pasado por muchas publicaciones en SO y otras guías también. Pero no pude obtener ninguna publicación oficial u otra que no contenga ningún código en desuso para subir varias imágenes usando volley. eliminación y relacionado en el nuevo android M y prefiero utilizar a continuación en su lugar.
android {
useLibrary ''org.apache.http.legacy''
}
Entonces, ¿puede alguien ayudarme a realizar la carga de varias imágenes con la nueva clase de voleibol obsoleta actualizada?
En este momento, la biblioteca Volley (tanto la de Google como la de mcxiaoke) todavía usa la biblioteca de Apache dentro de sus muchas clases. Si aún desea usar Volley sin ninguna dependencia de Apache , debe usarlo como un módulo dentro de su proyecto y modificar su archivo de código fuente.
Puede consultar mi código de ejemplo de GitHub , allí encontrará que he personalizado algunas clases como NetworkResponse
, HttpHeaderParser
, BasicNetwork
, HurlStack
, Volley
... Para la solicitud de HurlStack
partes, use el archivo MultipartActivity.java
.
Verás el contenido del archivo build.gradle
:
apply plugin: ''com.android.application''
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.volleynoapache"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
testCompile ''junit:junit:4.12''
compile ''com.android.support:appcompat-v7:23.1.1''
}
Otra buena solución de alternavite, IMHO, es usar OkHttp, también he tenido un código de muestra de trabajo en GitHub , eche un vistazo.
¡Espero eso ayude!
Puede usar la última versión de volley desde here . Es un espejo no oficial con algunas correcciones de errores menores y el código fuente se sincronizará periódicamente con el repositorio oficial de volley.
para Gradle
compile ''com.mcxiaoke.volley:library:1.0.19''
O puedes descargar la versión compilada desde here
Ahora puede usar la clase adjunta a continuación para realizar una solicitud multiparte usando volley con la ayuda de MultipartEntityBuilder
en org.apache.http.entity.mime
sin tener ningún código en desuso.
Uso de la muestra
//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);
Puede usar httpmime-4.3.5.jar
y httpcore-4.3.2.jar
para obtener acceso a MultipartEntityBuilder
y otros métodos que se usan para realizar la solicitud o agregar lo siguiente en su gradle si su API de segmentación 23 y superior.
android {
useLibrary ''org.apache.http.legacy''
}
De cualquier manera, estoy usando el mencionado jar''s y funciona como un encanto en Android M. también.
Actualizar
Tenga en cuenta que com.mcxiaoke.volley:library:1.0.19
desuso y ya no se mantiene, use la versión oficial de jCenter
.
compile ''com.android.volley:volley:1.0.0''