我有一个对象的ArrayList我需要放入MultipartBody.Builder中。我尝试使用.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;
}
我有一个类来代表一个玩家的手牌。但是,我(在另一个类中)有一个数组列表,我想在其中表示一堆玩家手。问题是我不知道如何在多手牌的数组列表中将一张牌添加到手牌中。我有一个代表卡牌和一副牌的类,效果很好。我只是试图了解如何将对象添加到数组列表中的对象。谢谢!
我想用不同的ID将学生添加到studentList中。我无法在for循环中创建学生,因为创建一个学生需要太长的时间。我发现有一个克隆方法,但学生对象有许多字段(其中大多数引用另一个对象)。有什么想法吗?
问题内容: 据我了解,a 是定义为 一些特定但未知类型 的 列表 。因此,无论此参数的类型是什么,都应该对其进行扩展,因为在Java中,不能有任何不扩展的类型。那么为什么下面的代码没有被编译呢?它如何违反了不变式 问题答案: 可以指向可以存储不同类型对象的任何类型的列表。 您如何看待,例如,让它添加任何对象是否安全?
问题内容: 如果需要在列表中添加枚举属性,如何声明列表?让我们说枚举类是: 我想要做: 需要用什么代替 问题答案: 如果要使用字符串类型,请使用以下命令: 否则,MByD的答案
我的问题是:给出一份人员名单,把所有学生都退回来。 以下是我的类: Person类 学生班级 方法 我收到一个编译错误: 如何使用stream返回列表中的所有学生而不出现此错误。
我是java新手,正在努力克服它。我有类似(< code>String URL,int Score)的数据,我想在数组列表中实现它。我研究了如何在< code>ArrayList或< code>LinkedList中实现多种类型的变量,发现解决方案是从超类创建子类,我创建了这个子类: 我的超级班是: 当我尝试使用添加对象时,我遇到了错误?该错误说: 类型ArrayList中的add(int,MyS