【发布时间】:2019-05-31 16:11:26
【问题描述】:
OkHttp 版本:2.0.0
我通过 Google Play 收到了以下异常堆栈跟踪:
java.lang.IllegalStateException: 无法流式传输请求正文 分块编码或已知的内容长度!在 com.squareup.okhttp.internal.http.HttpTransport.createRequestBody(HttpTransport.java:68) 在 com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:254) 在 com.squareup.okhttp.Call.getResponse(Call.java:198) 在 com.squareup.okhttp.Call.access$200(Call.java:36) 在 com.squareup.okhttp.Call$AsyncCall.execute(Call.java:143) 在 com.squareup.okhttp.internal.NamedRunnable.run(NamedRunnable.java:33) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 在 java.lang.Thread.run(Thread.java:848)
这正是提出请求的方式:
Request.Builder requestBuilder = new Request.Builder();
requestBuilder.addHeader("User-Agent", userAgent);
requestBuilder.addHeader("Accept", "application/hal+json");
requestBuilder.url(transformedURL);
RequestBody requestBody = body == null ? null : RequestBody.create(MediaType.parse("application/json"), gson.toJson(body));
requestBuilder.method(method, requestBody);
okHttpClient.newCall(requestBuilder.build()).enqueue(new com.squareup.okhttp.Callback() { ...
起初它似乎与this bug 有关,但它已经被修复了。此外,我们在开发过程中多次测试了带有空主体的 POST 请求。
此应用仅执行 GET 和 POST 请求。
什么可能导致这个错误?
【问题讨论】:
-
找到原因了吗?我遇到了同样的问题,但仍然不知道根本原因,因为我之前成功使用过相同的代码。