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 Đỗ
相关产品推荐
相关产品推荐

