我正在使用Retrofit 1.5.0和OkHttp来调用REST POST端点,该端点为后续GET请求返回302。使用OkHttp 1.3.0,这可以按预期工作。但是,在升级到OkHttp 1.5.0(或更高版本)之后,即使两个请求都已发出,我也会收到SocketTimeoutException。我的RestAdapter使用默认的OkClient。
OkHttp团队最近修复了一个问题(https://github.com/square/okhttp/issues/296),其中Content-Length标头从POST请求保留到GET请求。查看OkHttp 1.5.2的代码,修复似乎是通过在创建GET请求之前删除com.squareup.okhttp.internal.http.HttpURLConnectionImpl.getResponse()
中的标头来实现的。但是,如果实例字段fixedContentLength
不是-1,则会在com.squareup.okhttp.internal.http.HttpURLConnectionImpl.newHttpEngine()
中重新创建Content-Length标头。 <{1}}字段由<{1}} 在原始POST请求之前设置,因此结果是当发出GET请求时Content-Length标头以正值出现
这是一个错误还是我从配置角度遗漏了什么?