java.net.SocketException:连接重置,使用GET页上的HttpURLConnection
使用Java HttpURLConnection以编程方式获取页面时会出现错误Java.net.SocketException:连接重置。使用Python和Postman 在gmail登录页面、ebanking登录页面等其他页面上试用过,效果不错,但只有一个站点我需要它来工作,但它不起作用。继Python脚本之后,Postman也可以工作,但Java不行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)
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并查看服务器日志。