
我有一个ObjectList,我需要放入我的Multipartbody.Builder.I尝试使用.addFormDataPart的不同方法,但没有工作.这就是我将它放入请求的方式.任何帮助,将不胜感激.谢谢
我在服务器上的JSON格式如下
{ "formData": [ { "name": "string", "value": { any-object(string,file,long....etc) } } ], "tripID": "string" }这就是我这样做的方式
private Requestbody getMultipartData(Object postData) { Multipartbody.Builder formBody = new Multipartbody.Builder(); formBody.setType(Multipartbody.FORM); ArrayList<UserData> arrayList = null; if (postData instanceof OnboardPresenterImpl.TripRequest) { OnboardPresenterImpl.TripRequest tripRequest = ((OnboardPresenterImpl.TripRequest) postData); formBody.addFormDataPart("tripID", tripRequest.getTripID()); arrayList = tripRequest.getFormData(); } if (arrayList != null && arrayList.size() > 0) { for (int i = 0; i < arrayList.size(); i++) { UserData userData = arrayList.get(i); String value = userData.getValue().tolowerCase(); if (value.contains("/") && (value.contains(".png") || value.contains(".jpeg") || value.contains(".jpg"))) { MediaType type = Util.getMediaType(value); file sourcefile = new file(value); if (sourcefile.exists()) { formBody.addFormDataPart(userData.getname(), sourcefile.getname(),Requestbody.create(type, sourcefile)); } } else { formBody.addFormDataPart(userData.getname(), value); } } } return formBody.build(); }解决方法:
几天后,我找出了解决方案
String uploadMultiplefiles(API API, HashMap<String, ArrayList<file>> fileListMap) throws IOException { String responseS; OkhttpClIEnt timeOut = getokhttpClIEnt(API.getTimeOut()); Multipartbody.Builder multipartBuilder = new Multipartbody.Builder() .setType(Multipartbody.FORM); int j = 0; ArrayList<file> fileList; for (Map.Entry<String, ArrayList<file>> entry : fileListMap.entrySet()) { String key = entry.getKey(); fileList = entry.getValue(); multipartBuilder.addFormDataPart("data[" + j + "].name", key); if (fileList != null) { for (int i = 0; i < fileList.size(); i++) { file fileListRequest = fileList.get(i); if (fileListRequest.exists()) { String ext = CommonUtils.getExtension(fileListRequest.getname()); /* Changing Media Type whether JPEG or PNG **/ final MediaType MEDIA_TYPE = ext.endsWith("png") ? MEDIA_TYPE_PNG : ext.endsWith("jpg") ? MEDIA_TYPE_JPG : MEDIA_TYPE_JPEG; multipartBuilder.addFormDataPart("data[" + j + "].files[" + i + "]", fileListRequest.getname(), Requestbody.create(MEDIA_TYPE, fileListRequest)); } } } j++; } Requestbody requestbody = multipartBuilder.build(); Request.Builder requestBuilder = new Request.Builder() .url(Objects.requireNonNull(API.getUrl())) .post(requestbody); buildheaders(requestBuilder); Response response = timeOut.newCall(requestBuilder.build()).execute(); responseS = response.body().string(); Log.i(API.getname().name(), responseS); return responseS; } 总结 以上是内存溢出为你收集整理的android – 如何在OkHttpClient中将对象(即UserData)类型的列表添加到MultipartBody全部内容,希望文章能够帮你解决android – 如何在OkHttpClient中将对象(即UserData)类型的列表添加到MultipartBody所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)