java - 异常使用 HttpRequest.execute() : Invalid use of SingleClientConnManager: connection still allocated

标签 java httpclient google-api-java-client

我正在使用 google-api-client-java 1.2.1-alpha 执行 POST 请求,并且在执行() HttpRequest 时得到以下堆栈跟踪。

在我捕获并忽略从以前的 POST 到同一 URL 的 403 错误并为后续请求重新使用传输后立即发生这种情况。 (它在循环中将多个条目插入到同一个 ATOM 提要中)。

在 403 之后我应该做些什么来“清理”吗?

Exception in thread "main" java.lang.IllegalStateException: Invalid use of SingleClientConnManager: connection still allocated.
Make sure to release the connection before allocating another one.
    at org.apache.http.impl.conn.SingleClientConnManager.getConnection(SingleClientConnManager.java:199)
    at org.apache.http.impl.conn.SingleClientConnManager$1.getConnection(SingleClientConnManager.java:173)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:390)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
    at com.google.api.client.apache.ApacheHttpRequest.execute(ApacheHttpRequest.java:47)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:207)
    at au.com.machaira.pss.gape.RedirectHandler.execute(RedirectHandler.java:38)
    at au.com.machaira.pss.gape.ss.model.records.TableEntry.executeModification(TableEntry.java:81)

为什么我下面的代码会尝试获取一个新的连接?

最佳答案

您需要先使用响应正文,然后才能将连接重用于另一个请求。您不仅应该读取响应状态,还应该将响应 InputStream 完全读取到最后一个字节,从而忽略读取的字节。

关于java - 异常使用 HttpRequest.execute() : Invalid use of SingleClientConnManager: connection still allocated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612573/

相关文章:

java - 如何使用 Gmail API 检索电子邮件正文内容?

java - 升级到 Spring Security 4 后尝试登录时出现 404

java - Java 中 Google OAuth 2 进程中的状态参数

java - 从网站启动桌面应用程序

C# HttpClient刷新 token 策略

java - 使用 java 的 cURL 命令

java - HttpClient 抛出 TruncatedChunkException 访问大块资源

google-drive-api - 转移用户谷歌驱动器中所有文件的所有权 - 使用 google-api-java-client 和驱动器 SDK

java - 来自 org.w3c.dom 的 getElementsByTagName 未获取所有子节点

java - Java 中的 KeyBinds 在按住 Shift 时会中断