retrofit2.0转换String 报错修复

来源:互联网 发布:防伪税控开票软件 编辑:程序博客网 时间:2024/06/10 15:44

添加Gson转换支持

new Retrofit.Builder()                    .addConverterFactory(GsonConverterFactory.create())                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                    .baseUrl(AppVars.RequestPath.BASE_URL)                    .client(App.getOkHttpClient())                    .build();

然后这样设置后 Call< String>会出现gson类型转换异常

需要添加字符串转换

import com.squareup.okhttp.ResponseBody;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.lang.reflect.Type;import java.lang.annotation.Annotation;import retrofit.Converter;/** * retrofit转换成字符串支持 * Created by Administrator on 2015/11/19. */public final class StringConverterFactory extends Converter.Factory {    public static StringConverterFactory create() {        return new StringConverterFactory();    }    @Override    public Converter<ResponseBody, ?> fromResponseBody(Type type, Annotation[] annotations) {        return new ConfigurationServiceConverter();    }    final class ConfigurationServiceConverter implements Converter<ResponseBody, String> {        @Override        public String convert(ResponseBody value) throws IOException {            BufferedReader r = new BufferedReader(new InputStreamReader(value.byteStream()));            StringBuilder total = new StringBuilder();            String line;            while ((line = r.readLine()) != null) {                total.append(line);            }            return total.toString();        }    }}

最后添加

 retrofit = new Retrofit.Builder().addConverterFactory(StringConverterFactory.create())                    .addConverterFactory(GsonConverterFactory.create())                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                    .baseUrl(AppVars.RequestPath.BASE_URL)                    .client(App.getOkHttpClient())                    .build();
0 1
原创粉丝点击