在拦截中对请求主体进行改造2附加帖子

尼克·卡德佩维拉

我有这个:

OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
    @Override
    public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        HttpUrl url = request.httpUrl().newBuilder()
                     .addQueryParameter("platform", "android")
                     .addQueryParameter("app_version", com.package.BuildConfig.VERSION_NAME)
                     .build();
        Request newRequest = chain.request().newBuilder().url(url).build();
        return chain.proceed(newRequest);
    }
});

但也想将一个附加的后键值附加到包含用户键的请求正文中。这看起来像

    RequestBody newBody = RequestBody.create(request.body().contentType(),request.body().content+ request.addPost("sUserKey","3254345kdskf");
...
...
 Request newRequest = chain.request()
.newBuilder()
.url(url)
.post(newBody)
.build();
除夕

您可以执行此操作而无需创建其他类。

client.interceptors().add(new Interceptor() {
    @Override
    public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        String parameter = "&" + name + "=" + value;
        Request newRequest = interceptRequest(request, parameter)
        return chain.proceed(newRequest);
    }
});

这是创建新请求的简单方法。

 public static Request interceptRequest(@NotNull Request request, @NotNull String parameter)
            throws IOException {

        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        Sink sink = Okio.sink(baos);
        BufferedSink bufferedSink = Okio.buffer(sink);

        /**
         * Write old params
         * */
        request.body().writeTo(bufferedSink);

        /**
         * write to buffer additional params
         * */
        bufferedSink.writeString(parameter, Charset.defaultCharset());

        RequestBody newRequestBody = RequestBody.create(
                request.body().contentType(),
                bufferedSink.buffer().readUtf8()
        );

        return request.newBuilder().post(newRequestBody).build();
    }

你也可以从吉斯特那里得到它

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在单个请求中对表格进行编码和加装改造

来自分类Dev

改造2。响应主体为null

来自分类Dev

在一个多部分请求中附加“改造”多个图像

来自分类Dev

当使用单例模式进行改造 2 时,如何使用拦截器生成不同的标头?

来自分类常见问题

Angular2中的Http.DELETE请求主体

来自分类Dev

Typhoeus的Ruby 2拦截请求

来自分类Dev

如何将 AJAX 请求附加到 Wordpress 中的某个帖子 ID?

来自分类Dev

改造Android的2个最佳做法:AsyncTask中的异步请求或同步请求?

来自分类Dev

Dagger2 生成改造拦截器的多个实例

来自分类Dev

条带令牌未附加到Rails App的请求主体

来自分类Dev

Angular 2(Ionic 2):拦截Ajax请求

来自分类Dev

Angular 2(Ionic 2):拦截Ajax请求

来自分类Dev

在运行时使用Dagger添加改造请求拦截器

来自分类Dev

如果我在一个请求中获得四个 pojo,如何重新编写代码以进行改造?

来自分类Dev

Global.asax中的拦截请求

来自分类Dev

使用 Dagger 2 进行改造 - android

来自分类Dev

Square的改造Android:根据请求内容进行哈希处理

来自分类Dev

进行改造

来自分类Dev

有没有办法拦截和“更改” python请求响应主体?

来自分类Dev

在DELETE请求的主体中传递数据

来自分类Dev

在Grape API中检查请求主体

来自分类Dev

在Grape API中检查请求主体

来自分类Dev

API请求中的单引号主体

来自分类Dev

改造2文件上传不附加文件

来自分类Dev

无法以API读取wso2 ESB中的JSON请求主体参数

来自分类Dev

Spring Security 主体改造

来自分类Dev

Python请求模块,需要对主体进行编码,为什么?

来自分类Dev

Python请求模块,需要对主体进行编码,为什么?

来自分类Dev

如何拦截url文件并将其附加到邮件中

Related 相关文章

热门标签

归档