首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Retrofit2.1.0构建过程中,是否有一种在post请求参数中传递的方法?

在Retrofit2.1.0构建过程中,是否有一种在post请求参数中传递的方法?
EN

Stack Overflow用户
提问于 2016-11-11 07:52:16
回答 2查看 213关注 0票数 1

我正在尝试从HTTP参数动态计算校验和。然后,我想添加这个校验和作为HTTP参数。

首先,我需要获得作为参数传入的字段,但看起来retrofit只能访问url查询参数。

@Gordak展示了获取查询参数的方法,但如果可能的话,我想要实现的是获取请求链中的post参数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-11 09:37:39

好了,我们开始吧。

首先,构建您的OkHTTP客户端和retrofit对象。

代码语言:javascript
运行
复制
        OkHttpClient client = httpBuilder
                .addNetworkInterceptor(INTERCEPTOR_REQUEST_ADD_CHECKSUM)
                .build();

        Retrofit retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .baseUrl("https://my.domain.com")
                .build();

然后,您需要定义拦截器:

代码语言:javascript
运行
复制
 private static final Interceptor INTERCEPTOR_REQUEST_ADD_CHECKSUM = new Interceptor() {
        @Override
        public Response intercept(Interceptor.Chain chain) throws IOException {
            HttpUrl url = chain.request().url();
            String param1 = url.queryParameter("param1");
            String param2 = url.queryParameter("param2");
            String chk = aMethodToComputeChecksum(param1,param2);

            url = url.newBuilder().addQueryParameter("checksum", chk).build();
            Request request = chain.request().newBuilder().url(url).build();
            return chain.proceed(request);
        }
票数 1
EN

Stack Overflow用户

发布于 2016-11-11 08:41:06

也许它会有所帮助--尝试计算一次这个参数并用RequestInterceptor编写它。

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

https://stackoverflow.com/questions/40543444

复制
相关文章

相似问题

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