【发布时间】:2017-05-06 09:47:24
【问题描述】:
上传错误:使用 JsonReader.setLenient(true) 在第 15 行第 1 列路径 $enter code here 接受格式错误的 JSON
我想上传一些图片,但错误:使用 JsonReader.setLenient(true) 在第 15 行第 1 列路径接受格式错误的 JSON。 我多次改写 URl 和改写 JavaBean,同时出错。
这个Retrofit2界面:
public interface ImageUpload {
@Multipart
@POST("/xxzx/a/tpsb/uploadPicture")
Call<UploadResult> uploadMultipleFiles(
@PartMap Map<String, RequestBody> files
);
初始化改造2:
public class ServiceGenerator {
private static final String API_BASE_URL= "http://114.115.139.232:8080/";
private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
private static Retrofit.Builder builder =
new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create());
public static <S> S createService(Class<S> serviceClass){
Retrofit retrofit = builder.client(httpClient.build()).build();
return retrofit.create(serviceClass);
}
调用 Retrofit2:
private void uploadFiles() {
if(imagesList.size()==0){
Toast.makeText(MainActivity.this, "nothing", Toast.LENGTH_SHORT).show();
return;
}
Map<String, RequestBody>files = new HashMap<>();
final ImageUpload service = ServiceGenerator.createService(ImageUpload.class);
for (int i = 0;i<imagesList.size();i++){
File file = new File(imagesList.get(i).path);
files.put("file" + i + "\"; filename=\"" + file.getName(),
RequestBody.create(MediaType.parse(imagesList.get(i).mimeType), file));
}
Call<UploadResult> call = service.uploadMultipleFiles(files);
call.enqueue(new Callback<UploadResult>() {
@Override
public void onResponse(Call<UploadResult> call, Response<UploadResult> response) {
if (response.isSuccessful()){
Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<UploadResult>call, Throwable t) {
Log.i("wxl", "onFailure=" + t.getMessage());
Toast.makeText(MainActivity.this,"error", Toast.LENGTH_SHORT).show();
}
});
}
他用过邮递员的帖子:
{
"failureList": [],
"successNum": 1,
"failureNum": 0
}
javabean:
public class UploadResult<T> {
public int successNum;
public int failureNum;
public ArrayList<String> failureList;
}
【问题讨论】: