java - example - volley android studio 2018




¿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.

CustomMultipartRequest.java

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'




multipart