【发布时间】:2018-06-26 03:54:18
【问题描述】:
我在 Android 中使用 Retrofit 和 Okhttp 时遇到问题。问题是当我使用带有正文有效负载的请求时,会自动添加标头Transfer-Encoding: chunked,如下所示:
@POST("members")
Observable<Response<Void>> createMember(@Header(X_CLIENT_AUTHORIZATION)
String clientAuthorization, @Body RequestBody payload);
然后,自动添加标题Transfer-Encoding: chunked,由于某种原因,服务器无法处理。我希望正文是纯文本 json。服务器认为它是我猜的文件。
最糟糕的是,如果我尝试添加拦截器并使用 removeHeader 甚至都不起作用。
httpClient.addInterceptor(new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request original = chain.request();
Request.Builder requestBuilder = original.newBuilder()
.removeHeader("Transfer-Encoding");
Request request = requestBuilder.build();
return chain.proceed(request);
}
});
我希望能够发送带有RequestBody 但没有chunked 标头的@POST...
如果我这样使用它就不会添加标题:
@POST("members")
Observable<Response<Void>> createMember(@Header(X_CLIENT_AUTHORIZATION) String clientAuthorization, @Body **String** payload);
但我想避免在发送之前将所有对象解析为String。
有谁知道如何删除此类请求并将对象作为纯文本 json 发送?
【问题讨论】:
标签: java android retrofit okhttp