GsonConverterFactory继承了Converter.Factory,它的关键函数是responseBodyConverter和requestBodyConverter。 public final class GsonConverterFactory extends Converter.Factory { public static GsonConverterFactory create() { return create(new Gson()); } public static GsonConverterFactory create(Gson gson) { if (...
您可能将错误的转换器版本与您的Retrofit版本一起使用
throw methodError(e, "Unable to create converter for %s", responseType); } } public <T> Converter<ResponseBody, T> responseBodyConverter(Type type, Annotation[] annotations) { return nextResponseBodyConverter(null, type, annotations); } public <T> Converter<ResponseBody, T> nextResponseBodyCon...
1、接口定义 @POST("/") @FormUrlEncoded Call<WeatherBeans> requestWeatherBeans(@FieldMap Map<String, String> fields); 2、接口使用 private void doPost1() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://api.k780.com") .addConverterFactory(GsonConverterFactory.create()) .build...
publicstaticGsonConverterFactory create(Gson gson) { if(gson ==null)thrownewNullPointerException("gson == null"); returnnewGsonConverterFactory(gson); } privatefinalGson gson; privateGsonConverterFactory(Gson gson) { this.gson = gson; }
throw methodError(e, "Unable to create call adapter for %s", returnType); } } 在createCallAdapter方法中主要做的是事情就是获取到method的类型和注解,然后调用retrofit.callAdapter(returnType, annotations);方法: public CallAdapter<?> callAdapter(Type returnType, Annotation[] annotations) { return nextCa...
throw methodError(e, "Unable to create call adapter for %s", returnType); } } ServiceMethod在创建时,主要工作如下: callAdapter:明确正确的callAdapter; responseType:确定Call接口的返回值类型; responseConverter:明确对应的数据转换器; parameterHandlers:对接口中的注解参数进行解析配置; 2.OkHttpCall OkHttp...
converterFactorie的类型为retrofit2.Converter.Factory,看名字就知道这是一个工厂类,工厂类的作用是用来创建对象,所以这个工厂类就是用来创建Converter对象。 查看retrofit2.Converter.Factory的定义: 其中,getParameterUpperBound与getRawType用来获取参数化类型的工具方法,具体实现也是依赖于Retrofit.Utils工具包。
}catch(RuntimeException e) {// Wide exception range because factories are user code.throwmethodError(e,"Unable to create call adapter for %s", returnType); } } 可以看到这里确实是通过retrofit来查找CallAdapter的,那我们去Retrofit的callAdapter方法方法看看 ...
throw methodError(e, "Unable to create converter for %s", responseType); } } 主要是调用Retrofit的responseBodyConverter()来获取输入是ResponseBody的转化器,关于Retrofit我下面再介绍 3.2.12、 Builder的方法methodError解析 主要就是输出错误信息 代码语言:javascript 复制 private RuntimeException methodError(Str...