0

如何查看改造错误正文消息?我看到的只是字节数组,我无法阅读它。

在此处输入图像描述

在此处输入图像描述

4

4 回答 4

0

您可以在 RetrofitError 对象中获取响应正文。err.getResponse()会给你错误,err.getKind()会给你错误的类型。

于 2015-06-08T05:13:42.533 回答
0

当restofit收到响应时,使用Gson将响应转换为POJO。您必须创建 POJO 来接收响应而不是 String 对象。

例子: 这个

于 2015-07-07T03:28:04.877 回答
0

@Medo,您可以在代码中执行以下操作:

public Throwable processError(RetrofitError cause) {

    Response r = cause.getResponse();

    if (r != null) {
        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();

        String line;
        try {

            br = new BufferedReader(new InputStreamReader(r.getBody().in()));
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }

        } catch (IOException e) {
            Log.e(TAG, "IOException", e);
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    Log.e(TAG, "IOException", e);
                }
            }
        }

        if (r.getStatus() == 401) {
            Log.e(TAG, "401 Unauthorized Exception...");
        } else if (r.getStatus() == 500) {
            Log.e(TAG, "500 Server Error...");
        }

        Log.e(TAG, sb.toString());
    }

    return cause;
}

然后,您可以找出导致代码错误的原因。这是针对 Retrofit 1.9.0 而不是新的 2.x beta 版本。

于 2015-12-06T08:01:09.153 回答
0

您可以将这些字节数组转换为字符串。

@Override
public void failure(RetrofitError error) {
    String body = new String(error.getResponse().getBody());
    System.out.println(body);
}
于 2015-08-22T04:12:26.193 回答