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

Retrofit发起网络请求始终回调onFailure该如何排查解决?

Retrofit请求始终回调onFailure的解决步骤

首先你需要先输出具体的异常信息定位根因,当前onFailure方法仅打印固定提示,无法判断错误类型,先修改代码打印异常栈:

@Override
public void onFailure(Call<List<JobItem>> call, Throwable t) {
    Log.d("ERROR", "ERROR LOADING JSON", t);
    t.printStackTrace();
}

常见问题及对应解决方法如下:

  • 路径拼接规则异常

    Retrofit路径拼接有明确规则,配置不当会导致请求地址错误:

    1. 建议baseUrl末尾统一加后缀/,修改单例类中的baseUrl为"http://192.168.1.155:5000/"
    2. @GET注解的路径不要以/开头,修改EndPoints接口的注解为@GET("getjobs/hardware")
  • 安卓端网络配置缺失

    • 检查AndroidManifest.xml是否已添加网络权限:
      <uses-permission android:name="android.permission.INTERNET" />
      
    • Android 9(API 28)及以上系统默认禁止明文HTTP请求,你的接口为HTTP协议,需要额外配置:
      在res/xml目录下新建network_security_config.xml:
      <?xml version="1.0" encoding="utf-8"?>
      <network-security-config>
          <base-config cleartextTrafficPermitted="true" />
      </network-security-config>
      
      然后在AndroidManifest.xml的application标签中添加属性:
      android:networkSecurityConfig="@xml/network_security_config"
      
  • 实体类序列化失败

    检查JobItem实体类是否符合Gson序列化要求:

    1. 字段名和JSON返回的key完全一致,或通过@SerializedName注解指定映射关系
    2. 字段类型匹配:如date为字符串类型,count、packetSize等为数值类型,不要定义错误类型
    3. 提供public无参构造方法,所有字段添加对应的getter、setter方法
  • 网络连通性问题

    1. 确保运行客户端的设备/模拟器和后端服务在同一局域网,用设备浏览器直接访问测试接口地址,确认可以正常拿到返回结果
    2. 检查后端服务器防火墙是否开放了5000端口,没有拦截客户端请求

内容的提问来源于stack exchange,提问作者Alex Wesley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 14:06:03