在页面 GET 上使用 HttpURLConnection 时出现 java.net.SocketException : Connection reset,

标签 java networking https httpurlconnection socketexception

使用 Java (HttpURLConnection) 以编程方式获取页面会出现错误 java.net.SocketException:连接重置。可与 Python 和 Postman 配合使用。

尝试过其他页面,如 gmail 登录页面、电子银行登录页面等,它可以工作,但仅适用于一个网站(我需要它工作的网站)不行。使用Python脚本成功,Postman也可以工作,但Java不行

String url="https://********************/Login";
URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
        con.setRequestProperty("Cache-Control", "no-cache");
        con.setRequestMethod("GET");

        int responseCode = con.getResponseCode();

预计不会抛出异常。 实际结果是:

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)
...

有效的Python脚本:

import urllib.request  as urllib2 
content = urllib2.urlopen('https://******************/Login').read()
print(content)

最佳答案

尝试 HttpsURLConnection:

String url = "https://********************/Login";
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:735) 中的代码

enter image description here

也许代理是问题的原因。

关于在页面 GET 上使用 HttpURLConnection 时出现 java.net.SocketException : Connection reset,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54532763/

相关文章:

facebook - 我可以依赖 "SSL on Shared Hosting"吗?

tomcat - 如何在 Tomcat 上禁用从 HTTP 到 HTTPS 的自动重定向

java - Android:创建新 Intent 时出现 NullPointerException

java - Netty - 如何在 DDOS 中生存?

java - 如何在使用 proguard-maven-plugin 后组装项目

android - 如何在 PendingIntent 不再可用时正确调用 releaseNetworkRequest(PendingIntent)

android - iOS/Android - 你能读/写移动操作系统上的数据链路层吗?

ios - mobilefirst ios 混合应用程序无法连接到生产服务器

java - 我希望我的应用程序即使在调用 onDestroy() 时也能在(线程或作为服务)中运行(用户从后台删除)

c++ - 将 Windows 上的文件共享用于数据库时,它的可靠性如何?