Retrofit返回状态为400的null错误消息

时间:2014-12-09 04:58:12

标签: android rest retrofit

我创建了一个应用程序来使用我开发的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请求。它工作正常。在这里,我总是得到一个错误。表示它始终运行失败方法。我看到了

retrofitError.getMessage();

retrofitError.getResponse().getStatuse();

他们分别显示 null 400

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

感谢。

1 个答案:

答案 0 :(得分:0)

使用

retrofitError.getBody()

获取String或

retrofitError.getBodyAs(MyError.class)

如果要将错误json映射到对象