1

当 REST Api 返回 404 时,使用 NULL Response 调用 onResponse。我们有用户搜索 api,如果在服务器上找不到用户,我们的 REST api 将返回 404,并在正文中返回错误响应并提供更多详细信息。

由于 Retrofit 2.0 返回一个空响应体,我们很难向用户显示正确的错误。

我们是否有其他解决方案可以在 404 期间获得响应?

响应:{"responseStatus":{"code":"00297","severity":"ERROR","message":"Profile not found..","info":"","status":404}}

HTTP 状态码:404

谢谢

4

1 回答 1

4

Retrofit 2.0 不应该返回空响应。如果您正在进行异步回调并希望处理错误,它应该看起来像这样

     // Create a very simple REST adapter which points the GitHub API.
Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(API_URL)
    .addConverterFactory(GsonConverterFactory.create())
    .build();

// Create an instance of our GitHub API interface.
GitHub github = retrofit.create(GitHub.class);

// Create a call instance for looking up Retrofit contributors.
Call<List<Contributor>> call = github.contributors("square", "retrofit");

call.enqueue(new Callback<ArrayList<Item>>() {

        @Override
        public void onResponse(Call<ArrayList<Item>> call, Response<ArrayList<Item>> response) {
            if(response.isSuccessful()) {
                // do something
            }
            else {
                Log.e("Error Code", String.valueOf(response.code()));
                Log.e("Error Body", response.errorBody().toString());

                //display the appropriate message...
            }
        }

        @Override
        public void onFailure(Call<ArrayList<Item>> call, Throwable t) {

        }

});

其中一些代码是从Retrofit Samples复制而来的。如果您在 404 上得到空响应,则其他情况会出错。

于 2016-04-07T03:48:31.053 回答