我需要为OKHttp编写一个中间件来拦截所有已发送的查询参数(key1=value1&key2=value2&...
)并根据参数生成摘要,然后将其放在特定的标题上并随请求一起发送,我可以通过以下方式拦截所有请求:
OkHttpClient httpClient = new OkHttpClient();
httpClient.interceptors().add(new Interceptor() {
@Override
public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
Request original = chain.request();
String digest = "How can I get sended paramters?";
Request request = original.newBuilder()
.header("User-Agent", "Your-App-Name")
.header("Digest", digest)
.method(original.method(), original.body())
.build();
return chain.proceed(request);
}
});
但我无法找到检索参数列表的方法!任何想法?
答案 0 :(得分:2)
已经有一段时间了,但我相信你可以做到:
Request original = chain.request();
String params = original.url().query();
目前还没有安卓环境来测试这个问题。如果没有查看Request
和HttpUrl
的okhttp javadoc
修改强>
对于帖子正文有一个问题here我认为你做了什么,但简而言之它是这样的:
Request original = chain.request();
Buffer buffer = new Buffer();
original.body().writeTo(buffer);
String bodyStr = buffer.readUtf8();