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

Retrofit POST请求中替换无法解析主机错误为友好提示的方法

解决Retrofit请求服务器离线时的友好提示问题

我来帮你搞定这个问题!其实核心就是在错误回调里捕获特定的异常,然后替换成用户看得懂的提示就行,具体步骤如下:

1. 确保你的回调包含错误处理方法

看你贴的代码用了WebserviceCallBack,这个回调应该有对应的错误回调方法(比如onError(Throwable error)或者类似的),如果还没定义,得先补上。比如:

public interface WebserviceCallBack {
    void onResponse(String response, int code);
    void onError(Throwable throwable); // 补上这个错误回调方法
}

2. 在错误回调里判断异常类型并替换提示

在你发起请求的代码里,实现onError方法,捕获UnknownHostException(这就是导致"Unable to resolve host"错误的根源),然后弹出友好提示:

mEasyRetrofit.setPostMethod(WebConstants.CONTACT_FAMILY_LIST_URL, map, hashmap, new WebserviceCallBack() {
    @Override
    public void onResponse(String response, int code) {
        // 你的成功处理逻辑
    }

    @Override
    public void onError(Throwable throwable) {
        // 判断是否是服务器不可达的异常
        if (throwable instanceof UnknownHostException) {
            // 弹出友好提示,这里要注意用正确的Context,比如你的Activity实例
            Toast.makeText(getApplicationContext(), "服务器不可达,请检查网络或稍后重试", Toast.LENGTH_SHORT).show();
        } else {
            // 其他错误可以显示默认信息或者具体错误(根据需求调整)
            Toast.makeText(getApplicationContext(), "请求失败:" + throwable.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
});

3. 额外注意事项

  • 别忘了导入java.net.UnknownHostException包,不然会编译报错。
  • 如果你的mEasyRetrofit是封装过的Retrofit工具类,要确保它在请求失败时会正确调用onError方法,把Throwable传递过来。比如在Retrofit的onFailure回调里,把异常传给自定义的WebserviceCallBack.onError。

举个封装工具类里的错误传递示例(如果你的工具类是这么写的):

// 假设这是你封装的setPostMethod内部的Retrofit请求逻辑
call.enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
        // 处理成功响应,调用onResponse
    }

    @Override
    public void onFailure(Call<ResponseBody> call, Throwable t) {
        // 把异常传递给自定义回调的onError
        webserviceCallBack.onError(t);
    }
});

这样就能完美替换掉那个技术感十足的错误提示,给用户更友好的反馈啦!

内容的提问来源于stack exchange,提问作者kasim Rangwala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:55:49