Android 在2.1.0的构建过程中,是否有方法传递请求后参数?

Android 在2.1.0的构建过程中,是否有方法传递请求后参数?,android,retrofit2,Android,Retrofit2,我正在尝试从HTTP参数动态计算校验和。然后我想添加这个校验和作为HTTP参数 我需要首先获取作为参数传入的字段,但看起来改造只能访问url查询参数 @Gordak展示了获取查询参数的方法,但如果可能的话,我想实现的是在请求链中获取post参数。也许会有所帮助-尝试计算一次此参数并将其写入RequestInterceptor好的,我们开始吧 首先,构建OkHTTP客户端并改装对象 OkHttpClient client = httpBuilder

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

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


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

也许会有所帮助-尝试计算一次此参数并将其写入RequestInterceptor

好的,我们开始吧

首先,构建OkHTTP客户端并改装对象

        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();
然后,您需要定义拦截器:

 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);
        }

首先,让我看看我是否理解你。对我来说,您正在尝试从HTTP参数动态计算校验和。然后,您希望将此校验和添加为HTTP参数。是吗?@Gordak没错,这就是我的意思,我想用Interceptor而不是RequestInterceptor,我想,我想计算一次,但是fix args可以这样做,传入的args在这个点上是未知的,除了有一种方法我可以在拦截构建过程中获取请求参数谢谢,由于不同API的某些参数名称发生了更改,我将使用queryParameterNames获取所有键,然后检索它们的值,因为这些方法是以query开头的,我在开始时跳过了这些方法,稍后将检查它是否从request bodyYes检索参数。然后将字符串数组(或列表)传递给计算校验和的方法;)很抱歉反馈太晚,但似乎无法获取post参数,因为它是在请求链中构建到RequestBody中的。