有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在intercept中更改响应主体(使用改进2)

我读了上千个答案,尝试了很多方法,但都不管用。 当我得到“401”时,我真的需要改变反应体。因为服务器响应不同于未经授权时的其他一般响应

我用的是改装2。为了捕获响应,我使用了拦截器:

                Request original = chain.request();
                Request.Builder requestBuilder = original.newBuilder()
                        .header("authorization", getAccessToken(context));
                Request request = requestBuilder.build();
                Response response= chain.proceed(request);
                if (response.code()==401) {
                    MediaType contentType = response.body().contentType();
                    ResponseBody body = ResponseBody.create(contentType, CommonFunctions.getUnAuthorizedJson(context).toString());
                    return response.newBuilder().body(body).build();
                }else{
                    return response;
                }

但身体还是不会因客户而改变。恩克方法


共 (1) 个答案

  1. # 1 楼答案

    你们可以用这种方式改变主体,但改型最终会看到401并抛出带有standart消息的HttpException,这可能会误导你们

    检查你的身体是否正常:

    
    val errorConverter: Converter<ResponseBody, ErrorResponse> =
            retrofit.responseBodyConverter(
                ErrorResponse::class.java,
                emptyArray()
            )
    
    val errorResponse = httpException
                .response()
                ?.errorBody()
                ?.let (errorConverter::convert)