Подтвердить что ты не робот

Загрузка нескольких изображений с помощью залпа?

Я прошел много сообщений в SO и других темах, а также. Но я не мог получить последнее официальное или другое сообщение, которое не содержит устаревшего кода для загрузки нескольких изображений с помощью volley.I пришло в голову Apache HTTP Client и связанные с ним в новом андроиде M и предпочли использовать ниже.

android {
    useLibrary 'org.apache.http.legacy'
}  

Итак, может ли кто-нибудь помочь мне сделать многократную загрузку изображений с новым обновленным устаревшим классом меньшего класса?

4b9b3361

Ответ 1

Вы можете использовать последнюю версию volley из здесь. Это неофициальное зеркало с небольшим исправлением ошибки, и исходный код будет периодически синхронизироваться с официальный репозиторий залпа.

для Gradle

compile 'com.mcxiaoke.volley:library:1.0.19' 

или вы можете скачать скомпилированную версию из здесь

Теперь вы можете использовать приведенный ниже класс для выполнения многостраничного запроса с помощью volley с помощью MultipartEntityBuilder в org.apache.http.entity.mime без использования устаревшего кода.

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 и другим методам, которые используются для создания запроса или добавления следующего в ваш gradle, если ваш таргетинг API 23 и выше.

android {
    useLibrary 'org.apache.http.legacy'
}  

В любом случае я использую упомянутую банку, и она работает как шарм в Android M.

Обновление

Обратите внимание: com.mcxiaoke.volley:library:1.0.19 устарел и больше не поддерживается, используйте официальную версию jCenter.

compile 'com.android.volley:volley:1.0.0'

Ответ 2

В этот момент библиотека Volley (как Google, так и mcxiaoke) по-прежнему использует библиотеку Apache внутри своих многочисленных классов. Если вы все еще хотите использовать Volley без какой-либо зависимости Apache, вам необходимо использовать его как модуль внутри вашего проекта и изменить его исходный код.

Вы можете обратиться к моему образцу кода GitHub, там вы найдете, что я настроил некоторые классы, такие как NetworkResponse, HttpHeaderParser, BasicNetwork, HurlStack, Volley... Для многостраничного запроса используйте файл MultipartActivity.java.

Вы увидите 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'
}

Другое хорошее альтернативное решение, IMHO, использует OkHttp, у меня также был рабочий пример кода GitHub, пожалуйста, взгляните.

Надеюсь, что это поможет!

Ответ 3

Я использовал только jsonobjectrequest в моем коде. Пожалуйста, проверьте это. Надеюсь, это поможет. GithubWork