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

Retrofit GET请求获取String数据失败,无法进入onResponse方法求助

排查Retrofit GET请求无法进入onResponse的问题

让我帮你一步步拆解这个问题,你的代码里有几个关键错误导致请求失败,根本没法走到onResponse方法:

1. BaseUrl的配置完全错误

这是最核心的问题:

  • Retrofit要求baseUrl必须以斜杠/结尾,你的"https://www.youtube.com/watch?v="不符合这个规范
  • 更重要的是,你的接口定义是@GET("users/{username}")(看起来是GitHub用户API的路径),但你却把YouTube的视频页面URL作为baseUrl,拼接后会生成完全无效的请求地址:https://www.youtube.com/watch?v=users/EMyW7WvhEso,这个地址根本不存在,请求必然失败

修正方案:把baseUrl改成GitHub API的根地址:

Retrofit retrofit= apiClientDetail.getRetrofit("https://api.github.com/");

2. 务必检查网络权限

如果是Android项目,别忘了在AndroidManifest.xml里添加网络权限,没有这个权限的话,所有网络请求都会直接失败:

<uses-permission android:name="android.permission.INTERNET"/>

3. 不要忽略onFailure里的错误信息

你现在的onFailure方法只调用了modelInterface.dataError(),完全不知道具体失败原因。建议添加日志打印,方便排查:

@Override
public void onFailure(Call<String> call, Throwable t) {
    Log.e("RetrofitError", "请求失败原因", t); // 打印错误栈信息
    modelInterface.dataError();
}

这样你就能在Logcat里看到具体错误,比如IOException(网络问题)、HttpException(HTTP错误码,比如404/500)等。

4. 确认ScalarsConverterFactory的依赖是否正确

虽然你添加了ScalarsConverterFactory.create(),但要确保已经在build.gradle里引入了对应的依赖:

// 针对Retrofit 2.x
implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'

版本号可以根据你使用的Retrofit版本调整。

把这些问题修正后,你的请求应该就能正常进入onResponse方法了。

内容的提问来源于stack exchange,提问作者Trang Đỗ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:31:20