Android Retrofitフレームワークに複数の画像をアップロードするソリューション

2289 ワード

シナリオ:
解決策は、Retrofitを使用したMulipartypedOutput
インタフェースは以下のように宣言されています.この場合、@FormUrlEncodedと@Multipart注釈は使用しないでください.
@POST(PATH + "submitOrderExt.do")
	public void submitOrderMul(@Body MultipartTypedOutput multipartTypedOutput,
			BaseCallback baseCallback);

MulipartTypedOutputパラメータのアセンブリ例コードは次のとおりです.
///     demo
		MultipartTypedOutput multipartTypedOutput = new MultipartTypedOutput();
		multipartTypedOutput.addPart("stID", new TypedString(stID));
		multipartTypedOutput.addPart("stName", new TypedString(stName));
		multipartTypedOutput.addPart("uID", new TypedString(uID));
		multipartTypedOutput.addPart("uLoginMail", new TypedString(uLoginMail));
		multipartTypedOutput.addPart("areaID", new TypedString(areaID));
		multipartTypedOutput.addPart("areaName", new TypedString(areaName));
		multipartTypedOutput.addPart("oUserName", new TypedString(oUserName));
		multipartTypedOutput.addPart("oUserTel", new TypedString(oUserTel));
		multipartTypedOutput.addPart("oAddress", new TypedString(oAddress));
		multipartTypedOutput.addPart("oRepairContent", new TypedString(oRepairContent));
		multipartTypedOutput.addPart("oTimeStart", new TypedString(mTimeStart));
		multipartTypedOutput.addPart("oTimeEnd", new TypedString(mTimeEnd));
		for (Map.Entry entry : oSceneImgUriMap.entrySet()) {
			multipartTypedOutput.addPart("oSceneImg", new TypedFile("image/jpeg", new File(GetPathFromUri4kitkat.getPath(OrderActivity.this, entry.getValue()))));
		}
		if(null != voiceFile){
			multipartTypedOutput.addPart("oVoice", voiceFile);
		}

説明:
言いたいことがある0-beta 1以降MultipartTypedOutputは使用せず@PartMapを使用
Updates
MultipartTypedOutput no longer exists in Retrofit 2.0.0-beta1
For those who want to upload multiple images now can use with @PartMap, reference link javadoc
参考出典:
[1] http://stackoverflow.com/questions/31212513/android-retrofit-post-request-with-json-payload-and-images-attached
[2] http://stackoverflow.com/questions/25249042/retrofit-multiple-images-attached-in-one-multipart-request/25260556#25260556