上传错误:使用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;
    }

最佳答案

这个用邮递员的帖子。但是我不确定您如何通过邮递员上传图像,可能是我不知道。
但是您需要记录实际出现在android日志中的数据

使用Http Interceptor记录:

  HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
    loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);


这是因为您可能从翻新客户端的请求中获取了不同的数据,这可能无法序列化您的数据。

休息一切似乎都还可以。

注意:请勿在您的api界面中使用“ /”,因为您已将其添加到基本网址的末尾

10-08 12:54