Hunter0x7c7
2023-08-11 198dd6e1b210758867eed417bf6e00ba733d47c0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.github.hunter0x7c7.sync.model.server.net.converters;
 
import okhttp3.ResponseBody;
import retrofit2.Converter;
import retrofit2.Retrofit;
 
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
 
/**
 * ================================================================
 * <p>
 * 版    权: HunterHuang(c)2020
 * <p>
 * 作    者: Hunter_1125607007@QQ.COM
 * <p>
 * 版    本: V1.0
 * <p>
 * 创建日期: 2020/6/23 21:05
 * <p>
 * 描    述:解决当接口请求的数据为空,返回没有响应体body,只有响应头header,content-length为0的Response,这时候GsonConverterFactory就解析异常
 * <p>
 * <p>
 * 修订历史:
 * <p>
 * ================================================================
 */
public class NullOnEmptyConverterFactory extends Converter.Factory {
 
    @Override
    public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
        final Converter<ResponseBody, ?> delegate = retrofit.nextResponseBodyConverter(this, type, annotations);
        return new Converter<ResponseBody, Object>() {
            @Override
            public Object convert(ResponseBody body) throws IOException {
                if (body.contentLength() == 0) return null;
                return delegate.convert(body);
            }
        };
    }
}