Загрузка нескольких изображений с помощью volley?
Я прошел через много сообщений в SO и других tuts.Но я не мог получить ни одного последнего официального или другого сообщения, которое не содержит устаревшего кода для загрузки нескольких изображений с помощью volley.Я узнал Apache HTTP Client removal и связанный в новом android M и предпочел использовать ниже.
android {
useLibrary 'org.apache.http.legacy'
}
Итак, может ли кто-нибудь помочь мне сделать несколько загрузок изображений с новым обновленным устаревшим классом волейбола ?
2 ответов
вы можете использовать последнюю версию volley от здесь.Это неофициальное зеркало с некоторым незначительным исправлением ошибок, и исходный код периодически синхронизируется с официальным репозиторием volley.
для Gradle
compile 'com.mcxiaoke.volley:library:1.0.19'
или вы можете скачать скомпилированную версию здесь
теперь вы можете использовать прилагаемый ниже класс для создания многопартийного запроса с помощью volley с помощью MultipartEntityBuilder
in org.apache.http.entity.mime
без наличия устаревшего кода.
пример использования
//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'
На данный момент Volley library (как Google, так и mcxiaoke) по-прежнему использует библиотеку Apache внутри своих многочисленных классов. Если вы все еще хотите использовать Volley без какой-либо зависимости Apache, вам нужно использовать его как модуль внутри вашего проекта и изменить его файл исходного кода.
вы можете обратиться к мой пример кода GitHub , там вы найдете, что я настроил некоторые классы, такие как NetworkResponse
, HttpHeaderParser
, BasicNetwork
, HurlStack
, Volley
... Для multipart запрос, пожалуйста, используйте .
вы увидите 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'
}
другое хорошее решение alternavite, IMHO, использует OkHttp, у меня также был рабочий пример кода в GitHub, пожалуйста, обратите внимание.
надеюсь, что это помогает!