You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Retrofit接收纯字符串响应报错,添加ScalarsConverterFactory后崩溃求助

问题原因及解决办法

错误原因分析

  1. 第一个报错(Use JsonReader.setLenient(true)...):Gson转换器默认要求返回内容是标准JSON格式,但API返回的纯字符串(如https://example.com/image.jpg)没有被双引号包裹,不属于合法JSON,导致Gson解析失败。
  2. 第二个崩溃(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:20:34