package com.shizhefei.mvc.http; import java.io.IOException; import okhttp3.HttpUrl; import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; public class NetworkExeption extends Exception { private static final long serialVersionUID = 2316643815390526053L; private final Response response; private int httpCode; private String url; public NetworkExeption(Response response) { super(); this.response = response; this.httpCode = response.code(); Request request = response.request(); if (request != null) { HttpUrl httpUrl = request.url(); if (httpUrl != null) { this.url = httpUrl.toString(); } } } public NetworkExeption(String url, Response response) { super(); this.response = response; this.httpCode = response.code(); this.url = url; } public Response getResponse() { return response; } private String message; @Override public String getMessage() { if (message == null) { message = toMessage(); } return message; } public String getUrl() { return url; } public int getHttpCode() { return httpCode; } private final String toMessage() { ResponseBody body = response.body(); StringBuilder builder = new StringBuilder("url:").append(url); builder.append(" code:").append(httpCode); builder.append(" message:").append(response.message()); if (body != null) { try { builder.append(" body:").append(body.string()); body.close(); } catch (IOException e) { e.printStackTrace(); } } return builder.toString(); } }