我正在編寫一個必須在我的工作環境中運行的java程序。 這裏是我的代碼片段:網絡/代理身份驗證(WebClient.UseDefaultCredentials備選)
URL url = new URL("www.google.com");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
在我的家庭網絡,這個工作完全正常,但企業網絡上,我得到這個錯誤:
java.net.SocketException: Software caused connection abort: recv failed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at java.io.BufferedInputStream.fill(Unknown Source) at java.io.BufferedInputStream.read1(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source) at sun.net.www.http.HttpClient.parseHTTP(Unknown Source) at sun.net.www.http.HttpClient.parseHTTP(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) at java.net.URL.openStream(Unknown Source) at Conquerer.run(Conquerer.java:44)
我敢肯定,這有與此處的網絡設置有關。但是,當我編寫C#程序時,我可以使用WebClient.UseDefaultCredentials(true);
來解決問題。 有沒有我可以用於我的Java程序的這個版本?
這裏有一些更多的細節,可以幫助:
- 我可以連接到我的電話的WiFi,但我不能使用互聯網。我可以ping通電話以確保它位於網絡上,但我無法訪問互聯網。
- 該網絡是基於Windows的。如果我使用我的個人筆記本電腦(Windows 8),我會彈出一個窗口,要求我在使用互聯網之前輸入我的憑據。當我輸入我的憑證時,我會獲得互聯網(chrome),但是java程序仍然無法連接。
- 我沒有使用代理服務器的網址
- 我確實有管理員權限,並且在管理模式下運行它並不能解決問題。
基於第一個細節,我不明白如果您無法訪問互聯網,我將如何獲得響應(recv錯誤) – sevensevens
我可以訪問互聯網(使用chrome,firefox,IE),但任何有史以來的程序嘗試使用外部連接將無法正常工作(如自我更新軟件)。我特別說,「我可以上網(chrome),但是java程序仍然無法連接。」 – TheKakester