okhttp拦截服务端抛出的http500异常以及异常信息
时间: 2024-12-20 18:31:09 浏览: 7
OkHttp是一个流行的HTTP客户端库,用于Android和Java平台上。当你想要拦截并处理服务器返回的HTTP 500错误(通常是由于服务器内部错误导致)时,可以使用OkHttp的中间件(interceptors)功能。
首先,在OkHttpClient.Builder中添加一个Interceptor,然后在该Interceptor的`intercept()`方法中检查响应状态码。如果状态码是500,你可以获取错误信息并采取相应的操作。这里是一个简单的示例:
```java
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class ServerErrorInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request originalRequest = chain.request();
// 检查是否收到500状态码
Response response = chain.proceed(originalRequest);
if (response.code() == 500) {
String errorMessage = "Server error occurred with code 500";
// 打印错误信息或者记录日志
System.err.println(errorMessage);
// 如果需要自定义错误处理,可以在这里创建一个新的Response对象,设置新的状态码、错误消息等
// 例如:return new Response.Builder()
// .code(500)
// .message(errorMessage)
// .protocol(response.protocol())
// .addHeader("Content-Type", "application/json; charset=utf-8")
// .build();
// 返回默认的500错误页面或者你想显示的信息
return response;
}
return response;
}
}
// 在构建OkHttpClient时加入这个拦截器
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new ServerErrorInterceptor())
.build();
```
阅读全文