gpt4 book ai didi

java - 如何更改拦截中的响应主体(使用改造2)

转载 作者:行者123 更新时间:2023-12-02 07:35:27 27 4
gpt4 key购买 nike

我阅读了数千个答案并尝试了很多方法但不起作用。当收到“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;
}

但是 client.enque 方法的主体仍然没有改变。

最佳答案

你可以用这种方式改变body,但是Retrofit最终会看到401并抛出带有标准消息的HttpException,这可能会产生误导

检查你的 body 是否正确:


val errorConverter: Converter<ResponseBody, ErrorResponse> =
retrofit.responseBodyConverter(
ErrorResponse::class.java,
emptyArray()
)

val errorResponse = httpException
.response()
?.errorBody()
?.let (errorConverter::convert)

关于java - 如何更改拦截中的响应主体(使用改造2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50314070/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com