如何解析422响应返回的错误json?

问题描述 投票:0回答:3

这是使用fiddler时的响应

HTTP/1.1 422 Unprocessable Entity
Server: nginx/1.9.4
Date: Thu, 25 Feb 2016 18:03:15 GMT
Content-Type: application/json
Content-Length: 31
Connection: close
Status: 422 Unprocessable Entity
X-Content-Type-Options: nosniff

{"error":"username is invalid"}

这是我调用Web服务的代码,我使用了改进的Web服务,我可以在成功时解析数据(代码201)但是当代码(422)我找不到错误消息时

call.enqueue(new Callback<UserRegister>() {
    @Override
    public void onResponse(Call<UserRegister> call, Response<UserRegister> response) {

        if (response.isSuccess()) {
            txt_pressure.setText("username:  " + response.body().username);
        } else {
            // how to parse error when 422
        }

    @Override
    public void onFailure(Call<UserRegister> call, Throwable t) {
        Toast.makeText(MainActivity.this, "Network error has occurred. Retry again...",
                Toast.LENGTH_SHORT).show();
    }
}); 
android json retrofit
3个回答
3
投票

试试这个

if(response.code() == 422) {
    //do whatever you want
}

0
投票

如果(responseCode == 422){

            BufferedReader in = new BufferedReader(new InputStreamReader(con.getErrorStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            Log.e("res--"+response);
        }

-1
投票

从改造文档中,您必须使用:

Response.errorBody() - 一个不成功的反应的原始反应机构

这是doc:

http://square.github.io/retrofit/2.x/retrofit/retrofit2/Response.html#errorBody--

© www.soinside.com 2019 - 2024. All rights reserved.