2014-06-19 51 views
0

我正在編寫一個必須在我的工作環境中運行的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程序仍然無法連接。
  • 我沒有使用代理服務器的網址
  • 我確實有管理員權限,並且在管理模式下運行它並不能解決問題。
+0

基於第一個細節,我不明白如果您無法訪問互聯網,我將如何獲得響應(recv錯誤) – sevensevens

+0

我可以訪問互聯網(使用chrome,firefox,IE),但任何有史以來的程序嘗試使用外部連接將無法正常工作(如自我更新軟件)。我特別說,「我可以上網(chrome),但是java程序仍然無法連接。」 – TheKakester

回答

1

從詳情#1,我猜你是公司使用代理。 Firefox,Chrome,IE等等的原因是由IT部門設置的。

檢查您的代理設置in each browser,看看是否有任何設置。

我對C#工作原理的猜測是代理設置在IE中,而C#正在將這些設置拉進來。我也會去IT部門尋求幫助,因爲問題幾乎肯定與網絡設置有關。