果然代码整理是很重要的
private void FilesUpload(String url, Map<String, File> files,
Map<String, String> params, Map<String, String> headers) {
Set<String> keySet = files.keySet();
RequestBody fileBody = null;
RequestBody requestBody = null;
okhttp3.Request.Builder get = new Request.Builder();
for (String key : keySet) {
File file = files.get(key);
if (null != file) {
fileBody = RequestBody.create(
MediaType.parse("application/octet-stream"), file);
MultipartBody.Builder builder = new MultipartBody.Builder();
// 参数
if (params != null) {
Set<String> keySet2 = params.keySet();
for (String key2 : keySet2) {
String value2 = params.get(key2);
builder.addFormDataPart(key, value2);
}
}
requestBody = builder.addFormDataPart("file", file.getName(),
fileBody).build();
// 头信息
iterHeader(headers, get);
}
request = get.post(requestBody).url(url).build();
}
}
本来是这样的代码,一整理就变成下面这样了,整个清晰多了,而且也正确了(前面的代码有错误)
private void FilesUpload(String url, Map<String, File> files,
Map<String, String> params, Map<String, String> headers) {
Set<String> keySet = files.keySet();
// RequestBody fileBody = null;
RequestBody requestBody = null;
okhttp3.Request.Builder get = new Request.Builder();
MultipartBody.Builder builder = new MultipartBody.Builder();
for (String key : keySet) {
File file = files.get(key);
if (null != file) {
RequestBody fileBody = RequestBody.create(
MediaType.parse("application/octet-stream"), file);
builder.addFormDataPart(key, file.getName(), fileBody);
}
}
// 头信息
iterHeader(headers, get);
// 参数
if (params != null) {
Set<String> keySet2 = params.keySet();
for (String key2 : keySet2) {
String value2 = params.get(key2);
builder.addFormDataPart(key2, value2);
}
}
requestBody = builder.build();
request = get.post(requestBody).url(url).build();
}
}