【问题标题】:Retrofit returns null error message with status 400改造返回空错误消息,状态为 400
【发布时间】:2015-09-12 23:04:50
【问题描述】:

我创建了一个应用程序来使用我开发的 REST api。 Android 客户端是用retrofit 库编写的。

我已经创建了一个接口作为 ObjectIFaceAsync

public interface ObjectIFaceAsync {
@POST("/")
public void addArea(
        @Body Area area,
        Callback<JsonElement> data
);
}

然后我在按钮单击中实现了它

Area pojoArea = new Area();
pojoArea.setArea(area.getText().toString());
pojoArea.setDistrict(district.getText().toString());
pojoArea.setProvince(province.getText().toString());
pojoArea.setAreaType(areaType.getSelectedItem().toString());
RestAdapter restAdapter = new RestAdapter.Builder()
    .setEndpoint(URLs.ENDPOINT + "/restaddarea")
    .build();
ObjectIFaceAsync objectIFaceAsync = restAdapter.create(ObjectIFaceAsync.class);

try {
    objectIFaceAsync.addArea(
        pojoArea, new Callback<JsonElement>() {
            @Override
            public void success(JsonElement jsonElement,retrofit.client.Response response) {
                if (jsonElement.getAsJsonObject()
                    .get("status").getAsString().equals("s")) {
                     //show a message 
                } else {
                    //show another message
                }
            }

            @Override
            public void failure(RetrofitError retrofitError) {
                //show a failure message
                }
            }
            );
    } catch (Exception e) {
    }

我使用了相同的端点并发送了一个没有 JSON @Body 的 get 请求。它工作正常。在这里我总是得到一个错误。意味着它总是运行 failure 方法。我得到了显示

retrofitError.getMessage();

retrofitError.getResponse().getStatuse();

它们分别显示 null400

有人可以告诉我必须做些什么来纠正这个问题。或者我在这里做错了什么。

谢谢。

【问题讨论】:

  • .setLogLevel(RestAdapter.LogLevel.FULL) .setLog(new AndroidLog("your_application")) 它将帮助您调试输出
  • @PramodYadav 我做对了其他事情吗?因为我不确定我是否错过了任何步骤。
  • 打印 RetrofitError 的堆栈跟踪。可能是 RetrofitError 中没有 throwable,但只有从端点返回的状态码。
  • 您是否尝试过使用"/restaddarea" 作为路径值并将其从端点定义中删除。通常端点定义应该只是方案和域名。

标签: android rest retrofit


【解决方案1】:

使用

retrofitError.getBody()

获取字符串或

retrofitError.getBodyAs(MyError.class)

如果你想将错误 json 映射到对象

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 2014-05-29
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多