2015-12-14 11 views
21

私はSOや他のツタでも多くの投稿を行ってきました。しかし、最新の役人や、ボレーを使って複数の画像をアップロードするための推奨されないコードは含まれていません。Apache HTTPクライアントを削除し、新しいアンドロイドMに関連し、代わりに以下を使用することをお勧めします。ボレーで複数の画像をアップロードしていますか?

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

ので、いずれかが更新された新しい非推奨少ないボレークラスで複数の画像のアップロードを行うために私を助けることができますか?

+0

** okhttp **。ここで見て:https://github.com/square/okhttp/wiki/Recipes#posting-a-multipart-request – rafid059

答えて

3

hereの最新版を使用することができます。マイナーなバグ修正を加えた非公式のミラーで、ソースコードは公式のvolleyリポジトリと定期的に同期します。

のGradleため

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

またはあなたが今、あなたはorg.apache.http.entity.mimeMultipartEntityBuilderの助けなしでボレーを使用してマルチパートリクエストを行うために、以下の添付クラスを使用することができますhere

からコンパイルされたバージョンをダウンロードすることができます推奨されないコードがあります。

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); 

どちらかあなたは要求をするか、またはあなたのGradle場合に次のように追加するために使用されMultipartEntityBuilderおよび他の方法のアクセスを取得するためhttpmime-4.3.5.jarhttpcore-4.3.2.jarを使用することができますターゲティング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' 
+0

で読んでくれてありがとうございます@Anoop Mそれは廃止されずに動作しますコード。 :) – Stella

+0

実際には、mcxiaokeのVolleyはまだAPI22を使用しています。https://github.com/mcxiaoke/android-volley/blob/master/gradle.propertiesで見ることができます:) – BNK

+0

mcontextと置き換えてください? – H4F

2

現在、Volleyライブラリ(Googleとmcxiaokeの両方)は、依然として多くのクラスの中でApacheのライブラリを使用しています。まだVolley をApacheの依存関係なしで使用する場合は、をプロジェクト内のモジュールとして使用し、ソースコードファイルを変更する必要があります。あなたがマルチパートリクエストのために...そこには、私は、このようなNetworkResponseHttpHeaderParserBasicNetworkHurlStackVolleyとしていくつかのクラスをカスタマイズしていることがわかります、my GitHub sample codeを参照することができ

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' 
} 

もう一つの良いalternaviteソリューション、私見を、OkHttpを使用している、私もGitHubでの作業サンプルコードを持っていた、見てください。

希望すると助かります!

+0

助けてくれてありがとうBNK.but実際に私はこれをApacheの依存関係を使用して行いたいです。 – Stella

+0

ああ!だから、 '非難されたless'とはどういう意味ですか?まだそれが欲しいなら、plsは私のリンクをhttp://stackoverflow.com/questions/32240177/working-post-multipart-request-with-volley-and-without-httpentity – BNK

関連する問題