Android Retrofit Interceptor为所有通话添加body参数

时间:2019-03-14 12:27:48

标签: android retrofit2 okhttp3

有什么方法可以编辑网络通话的正文,以添加 95%通话中使用的默认属性?

我发现查询参数很容易添加(link)

但是,我还没有看到一个身体。

我的问题是我正在使用一个旧的API,要求我在每个请求中发送令牌。因此,我需要在大多数类中添加这一行。

 @SerializedName("token") val token: String

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果发送标头,则应使用httpInterceptor解决此问题

final OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(new Interceptor() {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request()
                          .newBuilder()
                          // add token key on request header
                          // key will be using access token
                          .addHeader("token", yourToken) 
                          .build();
        return chain.proceed(request);
    }
});

retrofit = new Retrofit.Builder()
           .baseUrl(BASE_URL)
           .addConverterFactory(GsonConverterFactory.create())
           .client(httpClient.build())
           .build();

编辑:很抱歉,我已经意识到您现在要求发送正文。

我认为使用旧方法(没有Gson,Moshi等)可以实现。确实比添加每个请求更令人讨厌。