java - java.net.SocketException:输入流的连接重置
问题描述
我正在尝试从 https URL 下载文件。我可以使用以下代码从我的家用 PC 下载文件。但是,我无法从公司机器上下载它。必需cacerts
已正确导入到 java 中。我还可以从浏览器下载文件。我查看了其他线程的数量,但无法找出解决此问题的适当解决方案。这是我的Java代码
try
{
url = new URL(url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK)
inputStream = httpURLConnection.getInputStream();
else
inputStream = httpURLConnection.getErrorStream();
}
catch (Exception ioe)
{
ioe.printStackTrace();
}
这是我得到的例外。我总是在inputstream
. 请记住,此代码在我的家用 PC 上 100% 运行。
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
at sun.security.ssl.InputRecord.read(InputRecord.java:503)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:933)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:735)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:706)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1593)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:352)
任何线索都会有很大帮助。
解决方案
对我来说很好:
System.setProperty("http.proxyHost", "host");
System.setProperty("http.proxyPort", "port");
try {
URL u = new URL("some url");
HttpURLConnection huc = (HttpURLConnection) u.openConnection();
InputStream is = null;
if (huc.getResponseCode() == HttpURLConnection.HTTP_OK)
is = huc.getInputStream();
else
is = huc.getErrorStream();
} catch (Exception e) {
e.printStackTrace();
}
推荐阅读
- opencv - 如何将文本图像与同时具有文本和一些图形的图像分离
- javascript - Typescript .push 来自嵌套数组的数据
- html - 带有嵌入式 Google 日历的 iFrame 在 iOS 中旋转后溢出
- ide - 调整 JetBrains 产品中的代码完成
- swift - 动态调度协议扩展不适用于多个目标
- ios - 在 XCUITest 中,查找表视图单元格和节标题显示顺序的语法
- elasticsearch - ElasticSearch - 获取新记录
- eclipse - eclipse 中 mbed-cli 的编译时间很长
- c++ - 请求非类类型 ' ' 中的成员 ' '
- javascript - 如何使用map方法将查询参数传递给api并将每个json响应连接到setState中反应?