私はSOやその他のツイッターでもたくさんの投稿を経験しましたが、使用して複数の画像をアップロードするための非推奨のコードが含まれていない最新の公式またはその他の投稿を取得できませんでしたvolley.Iは、Apache HTTPクライアントの削除を知って、新しいAndroid Mに関連し、代わりに以下を使用することを推奨しました。
Android {
useLibrary 'org.Apache.http.legacy'
}
それで、新しく更新された非推奨の少ないボレークラスで複数の画像をアップロードするのを手伝ってくれる人はいますか?
here から最新バージョンのボレーを使用できます。これは、いくつかのマイナーなバグ修正を含む非公式のミラーであり、ソースコードは公式のボレーリポジトリと定期的に同期します。
Gradleの場合
compile 'com.mcxiaoke.volley:library:1.0.19'
または、コンパイル済みバージョンを ここ からダウンロードできます。
これで、以下の添付クラスを使用して、廃止予定のコードなしでorg.Apache.http.entity.mime
のMultipartEntityBuilder
の助けを借りて、volleyを使用してマルチパートリクエストを作成できます。
使用例
//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以上の場合は、グラドルに以下を追加します。
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'
現時点では、Volleyライブラリ(Googleとmcxiaokeの両方)は、まだ多くのクラス内でApacheのライブラリを使用しています。 Apacheの依存関係なしにVolleyを引き続き使用したい場合、プロジェクト内のモジュールとして使用し、ソースコードファイルを変更する必要があります。
my GitHub sample code を参照すると、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 もあります。ぜひご覧ください。
それが役に立てば幸い!