Retrofit2 error java.io.EOFException: End of input at line 1 column 1

后端 未结 3 1752
抹茶落季
抹茶落季 2020-12-29 18:00

I called PATCH web service using Retrofit2 but onResponse is not called and the onFailure is called Despite of

3条回答
  •  北荒
    北荒 (楼主)
    2020-12-29 18:35

    You can create NullOnEmptyConverterFactory.class :

    import java.io.IOException;
    import java.lang.annotation.Annotation;
    import java.lang.reflect.Type;
    
    import okhttp3.ResponseBody;
    import retrofit2.Converter;
    import retrofit2.Retrofit;
    
    
    public class NullOnEmptyConverterFactory extends Converter.Factory {
    
        @Override
        public Converter responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
            final Converter delegate = retrofit.nextResponseBodyConverter(this, type, annotations);
            return new Converter() {
                @Override
                public Object convert(ResponseBody body) throws IOException {
                    if (body.contentLength() == 0) return null;
                    return delegate.convert(body);               
                }
            };
        }
    }
    

    and add to code create. For ex:

     UploadImageNghiemThuApi uploadService = new Retrofit.Builder()
                .baseUrl(Config.URL+"/")
                .client(okHttpClient)
                // -----add here-------
                .addConverterFactory(new NullOnEmptyConverterFactory())
                //---------------------
                .addConverterFactory(GsonConverterFactory.create())
                .build()
                .create(UploadImageNghiemThuApi.class);
    

    I hope it can help your problem. Thanks!

提交回复
热议问题