Retrofit接收纯字符串响应报错,添加ScalarsConverterFactory后崩溃求助
问题原因及解决办法
错误原因分析
- 第一个报错(
Use JsonReader.setLenient(true)...):Gson转换器默认要求返回内容是标准JSON格式,但API返回的纯字符串(如https://example.com/image.jpg)没有被双引号包裹,不属于合法JSON,导致Gson解析失败。 - 第二个崩溃(
NoClassDefFoundError: ScalarsConverterFactory):你只在代码中添加了Scalars转换器的调用,但没有在项目依赖中引入对应的converter-scalars库,运行时找不到该类。
解决步骤
1. 添加Scalars Converter依赖
在Module级别的build.gradle(或build.gradle.kts)中添加对应版本的依赖,版本必须和Retrofit核心版本(2.9.0)一致:
// Groovy语法 implementation 'com.squareup.retrofit2:converter-scalars:2.9.0' // Kotlin DSL语法 implementation("com.squareup.retrofit2:converter-scalars:2.9.0")
添加后同步项目,确保依赖下载完成。
2. 正确配置Retrofit实例
注意转换器顺序:ScalarsConverterFactory要放在GsonConverterFactory之前,Retrofit会按顺序匹配转换器,优先用Scalars处理纯字符串返回:
Retrofit retrofit = new Retrofit.Builder() .baseUrl("你的API基础地址") .addConverterFactory(ScalarsConverterFactory.create()) // 优先添加 .addConverterFactory(GsonConverterFactory.create()) .build();
3. 定义正确的接口方法
将接口中对应请求的返回类型改为Call<String>,让Retrofit用Scalars转换器处理纯字符串响应:
public interface ImageApi { @GET("api/get-image-url") // 替换为你的实际接口路径 Call<String> fetchImageUrl(); }
完成以上步骤后,即可正常获取API返回的纯字符串图片URL,无需再设置Gson的lenient模式。
内容的提问来源于stack exchange,提问作者TemZy
相关产品推荐
相关产品推荐

