问题描述
我尝试将数据上传到服务器,我的数据包含多张图片,大 JSON
,在它之前,我尝试使用与转换图像发送到字符串的base64
并发送我的另一个数据和图像,我之前已经转换与 JSON
,但我面对的问题内存不足
在这里,所以我读的解决方案,说我一定要尝试使用 MultipartEntityBuilder
之一。我仍然混乱,不知道如何与 MultiPartEntityBuilder
做到这一点,是否有任何人能帮助我与 MultiPartEntityBuilder $ C $做到这一点C>?这是我的code:
I try to upload data to server, my data containing multiple images and large JSON
, before it, I Try to send with convert image to string using base64
and send my another data and image that I've convert before with JSON
, but I face Problem OutOfMemory
here, so I read one of solutions that said I must to try using MultipartEntityBuilder
.I still confusing and not understand how to do it with MultiPartEntityBuilder
, Is there anyone can help me the way to do it with MultiPartEntityBuilder
? this is my code :
try{
//membuat HttpClient
//membuat HttpPost
HttpPost httpPost= new HttpPost(url);
SONObject jsonObjectDP= new JSONObject();
System.out.println("file audio "+me.getModelDokumenPendukung().getAudio());
jsonObjectDP.put("audio_dp",MethodEncode.EncodeAudio(me.getModelDokumenPendukung().getAudio()));
jsonObjectDP.put("judul_audio",me.getModelDokumenPendukung().getJudul_audio());
jsonObjectDP.put("ket_audio",me.getModelDokumenPendukung().getKet_audio());
JSONArray ArrayFoto= new JSONArray();
//This loop For my multiple File Images
List<ModelFoto>ListFoto=me.getModelDokumenPendukung().getListFoto();
for (int i=0; i<ListFoto.size();i++) {
JSONObject jsonObject= new JSONObject();
jsonObject.put("foto", ListFoto.get(i).getFile_foto());
jsonObject.put("judul_foto", ListFoto.get(i).getJudul_foto());
jsonObject.put("ket_foto", ListFoto.get(i).getKet_foto());
ArrayFoto.put(jsonObject);
}
JSONObject JSONESPAJ=null;
JSONESPAJ = new JSONObject();
JSONObject JSONFINAL = new JSONObject();
JSONESPAJ.put("NO_PROPOSAL",me.getModelID().getProposal());
JSONESPAJ.put("GADGET_SPAJ_KEY",me.getModelID().getIDSPAJ());
JSONESPAJ.put("NO_VA",me.getModelID().getVa_number());
JSONESPAJ.put("Dokumen_Pendukung",jsonObjectDP);
JSONFINAL.put("ESPAJ", JSONESPAJ);
JSONFINAL.put("CLIENT", "ANDROID");
JSONFINAL.put("APP", "ESPAJ");
MultipartEntityBuilder multiPartEntityBuilder= MultipartEntityBuilder.create();
multiPartEntityBuilder.addPart("ESPAJ",JSONFINAL.toString());
httpPost.setEntity(multiPartEntityBuilder.build());
HttpResponse httpResponse = httpclient.execute(httpPost);
inputStream = httpResponse.getEntity().getContent();
if(inputStream != null)
result = convertInputStreamToString(inputStream);
else
result = "Did not work!";
}catch(OutOfMemoryError e){
Log.e("MEMORY EXCEPTION: ", e.toString());
} catch(ConnectTimeoutException e){
Log.e("Timeout Exception: ", e.toString());
} catch(SocketTimeoutException ste){
Log.e("Timeout Exception: ", ste.toString());
} catch (Exception e) {
// Log.d("InputStream", e.getLocalizedMessage());
}
private static String convertInputStreamToString(InputStream inputStream) throws IOException{
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
String line = "";
String result = "";
while((line = bufferedReader.readLine()) != null)
// hasil=line;
result += line;
inputStream.close();
return result;
}
有没有任何人能帮助我,教,并告诉我如何使用MultiPartEntityBuilder发送JSON和图片?
is there anyone can help me to teach and tell me how to send JSON and Image using MultiPartEntityBuilder?
推荐答案
要送你需要使用二进制数据 addBinaryBody
的方法 MultipartEntityBuilder
。附加的示例:
To send binary data you need to use addBinaryBody
method of MultipartEntityBuilder
. Sample of attaching:
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
//Image attaching
MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
File file;
multipartEntity.addBinaryBody("someName", file, ContentType.create("image/jpeg"), file.getName());
//Json string attaching
String json;
multipartEntity.addPart("someName", new StringBody(json, ContentType.TEXT_PLAIN));
然后进行申请和往常一样:
Then make request as usual:
HttpPut put = new HttpPut("url");
put.setEntity(multipartEntity.build());
HttpResponse response = client.execute(put);
int statusCode = response.getStatusLine().getStatusCode();
这篇关于安卓:上传图片和JSON使用MultiPartEntityBuilder的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!