您的位置:首页 > 其它

retrofit2.0转换String 报错修复

2015-11-19 14:36 323 查看
添加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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: