首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改装拦截响应

改装拦截响应
EN

Stack Overflow用户
提问于 2016-01-25 16:27:07
回答 2查看 2.8K关注 0票数 1

对于ws请求,我有以下代码:

代码语言:javascript
复制
RestAdapter mRestAdapter = new RestAdapter.Builder()
            .setEndpoint(ROOT_HOME_URL)
            .setRequestInterceptor(mRequestInterceptor)
            .setLogLevel(RestAdapter.LogLevel.FULL)
            .build();


    mInterfaceWs = mRestAdapter.create(InterfaceWs.class);

如何在响应到达我的模型之前拦截它?在响应中替换一些键字符串。

在我的响应中,我有一些名为:.type和#text的键,而在我的模型中,我不能将这些名称设置为字段

我能做些什么?请帮帮我

代码语言:javascript
复制
compile 'com.squareup.retrofit:retrofit:1.7.0'



RequestInterceptor mRequestInterceptor = new RequestInterceptor()
    {
        @Override
        public void intercept(RequestFacade request)
        {
            request.addHeader("Accept","application/json");
        }
    };
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-25 20:03:36

所以..。我设法在没有任何干预的情况下解决了我的问题。

对于那些和我一样有问题的人:

代码语言:javascript
复制
public class Atribute
{
@SerializedName(".type")
public String type;

@SerializedName("#text")
public String text;

public String getType() { return type; }
public String getText() { return text; }
}
票数 2
EN

Stack Overflow用户

发布于 2016-01-25 17:24:43

您可以使用OKHttp网络拦截器拦截并修改响应。为此,您需要设置一个定制的OkHTTP客户端,以便与改造一起使用。

代码语言:javascript
复制
OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new Interceptor() {
            @Override
            public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
                com.squareup.okhttp.Response response = chain.proceed(chain.request());
                //GET The response body and modify it before returning
                return response;
            }
        });

然后将其设置为用于改装。

代码语言:javascript
复制
RestAdapter mRestAdapter = new RestAdapter.Builder()
            .setClient(new OkClient(client))
            .setEndpoint(ROOT_HOME_URL)
            .setRequestInterceptor(mRequestInterceptor)
            .setLogLevel(RestAdapter.LogLevel.FULL)
            .build();

您可以阅读更多关于这里的网络拦截器的内容。

P.S:这个链接是OkHttp的最新版本。在最新版本的OkHttp中,初始化网络拦截器的方式已经发生了变化,但概念是相同的。我给出的代码应该适用于您的旧版本(改造1.7.0)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34997405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档