java.net.SocketException:连接重置,使用GET页上的HttpURLConnection

java.net.SocketException:连接重置,使用GET页上的HttpURLConnection,java,networking,https,httpurlconnection,socketexception,Java,Networking,Https,Httpurlconnection,Socketexception,使用Java HttpURLConnection以编程方式获取页面时会出现错误Java.net.SocketException:连接重置。使用Python和Postman 在gmail登录页面、ebanking登录页面等其他页面上试用过,效果不错,但只有一个站点我需要它来工作,但它不起作用。继Python脚本之后,Postman也可以工作,但Java不行 String url="https://********************/Login"; URL obj = new URL(url)

使用Java HttpURLConnection以编程方式获取页面时会出现错误Java.net.SocketException:连接重置。使用Python和Postman

在gmail登录页面、ebanking登录页面等其他页面上试用过,效果不错,但只有一个站点我需要它来工作,但它不起作用。继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.parseHTTPHeaderHttpClient.java中的代码:735


代理可能是问题的原因。

谢谢你的建议,但它并没有解决问题。如果你需要https连接而不验证任何证书,你可以使用类似的东西,否则你必须下载证书并将其添加到你的连接中。谢谢,我在其他有https连接的网站上使用了该代码,它工作了,没有显式导入他们的证书;而且是一样的。有什么建议吗?您好,您是否得到了此错误的相同堆栈跟踪?出于某种原因,服务器不喜欢HttpClient。也许它认为某些东西是错误的或不正确的SSL密码套件。连接重置只是指连接被另一方异常终止。您应该执行pcap并查看服务器日志。