Java HttpURLConnection.getReadTimeout()/HttpURLConnection.getConnectionTimeout()共-1个
我试图确定Java HttpURLConnection对象上当前的readTimeout和connectionTimeout是什么。在下面的日志记录语句中,它们都返回了带的-1:Java HttpURLConnection.getReadTimeout()/HttpURLConnection.getConnectionTimeout()共-1个,java,httpurlconnection,weblogic12c,connection-timeout,Java,Httpurlconnection,Weblogic12c,Connection Timeout,我试图确定Java HttpURLConnection对象上当前的readTimeout和connectionTimeout是什么。在下面的日志记录语句中,它们都返回了带的-1: private InputStream getSomethingImportant(final String letterId, final String documentId, HttpURLConnection connection) throws IOException {
private InputStream getSomethingImportant(final String letterId, final String documentId,
HttpURLConnection connection) throws IOException {
InputStream pdfStream = null;
final String url = this.getBaseURL() + "/letters/" + letterId + "/documents/" + documentId;
connection = RequestResponseUtil.initializeRequest(url, "GET", this.getAuthenticationHeader(), true, MediaType.APPLICATION_PDF_VALUE);
LOG.info("ConnectionTimeout is: {}", connection.getConnectTimeout());
LOG.info("ReadTimeout is: {}", connection.getReadTimeout());
// ...other non-relevant code...
}
public static HttpURLConnection initializeRequest(final String url, final String method,
final String httpAuthHeader, final boolean multiPartFormData, final String responseType) {
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod(method);
conn.setRequestProperty("X-Something-Authentication", httpAuthHeader);
conn.setRequestProperty("Accept", responseType);
if (multiPartFormData) {
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=BOUNDARY");
conn.setDoOutput(true);
}
else {
conn.setRequestProperty("Content-Type", "application/xml");
}
}
catch (final MalformedURLException e) {
throw new CustomException(e);
}
catch (final IOException e) {
throw new CustomException(e);
}
return conn;
}
上的JavaDocs和上的JavaDocs都将0列为返回选项,但没有提到-1。我该如何解释呢
此外,我使用的url是有效的,并且我正在成功返回一个InputStream
最后,我使用的是OracleJDK1.8.077。而且,值得注意的是,当我实际打印运行时使用的conn
类时,它是weblogic.net.http.SOAPHttpsURLConnection
(我使用的是weblogic 12.2)
谢谢。您能否发布最简单的代码来重现这一点。我只是尝试了一下,使用OracleJDK8得到了两个超时值的0;我在原始问题中添加了更多的代码上下文。谢谢你的帮助!除了一些额外的设置,这看起来像我做的。当您运行最小的示例:,仍然是两次-1时,您会得到什么?我的jdk是1.8.0_112,我得到的类是sun.net.www.protocol.https.HttpsURLConnectionImpl。我运行了你的示例,结果有点出乎意料。对于connectionTimeout和readTimeout,我仍然收到-1。我还打印了JDK版本并接收
1.8.0_77
。我收到该类的weblogic.net.http.SOAPHttpsURLConnection
。有趣的是,当我查看JavaDocs时,它只说它覆盖了类URLConnection中的getReadTimeout方法,但实际上并没有给出完整的实现:/好吧,如果你的IDE中安装了反编译器,你可以看看源代码,看看它们是怎么做的。显然,它们会覆盖它并使用不同的默认值。