4

URLへのリクエストのステータスコードを確認したいのですが、コードを取得しています

java.net.ConnectException: connect: Address is invalid on local machine or port is not valid on remote machine

ここに私のコードがあります

public static boolean linkExists(String URLName){
        URLName = "http://www.google.com";
        try {
          HttpURLConnection.setFollowRedirects(false);
          HttpURLConnection con =
             (HttpURLConnection) new URL(URLName).openConnection();
          con.connect();
          System.out.println(con.getResponseCode());
          return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
        }
        catch (Exception e) {           
           return false;
        }
  }

スタックトレース

java.net.ConnectException: connect: Address is invalid on local machine, or port is not valid on remote machine
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:378)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:473)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:203)
    at sun.net.www.http.HttpClient.New(HttpClient.java:290)
    at sun.net.www.http.HttpClient.New(HttpClient.java:306)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:995)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:931)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:849)
    at com.sls.lms.test.utilities.Utilities.linkExists(Utilities.java:70)
    at com.sls.lms.test.report.ReportTest.checkReportData(ReportTest.java:70)
    at com.sls.lms.test.report.ReportTest.CheckReportForGST(ReportTest.java:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
    at org.testng.junit.JUnit4TestRunner.start(JUnit4TestRunner.java:81)
    at org.testng.junit.JUnit4TestRunner.run(JUnit4TestRunner.java:69)
    at org.testng.TestRunner$1.run(TestRunner.java:682)
    at org.testng.TestRunner.runWorkers(TestRunner.java:1012)
    at org.testng.TestRunner.privateRunJUnit(TestRunner.java:713)
    at org.testng.TestRunner.run(TestRunner.java:614)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
    at org.testng.SuiteRunner.run(SuiteRunner.java:240)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
    at org.testng.TestNG.run(TestNG.java:1031)
    at org.testng.TestNG.privateMain(TestNG.java:1338)
    at org.testng.TestNG.main(TestNG.java:1307)
4

9 に答える 9

10

この問題は、OSがIPV6アドレスをサポートしていないか、IPV6アドレスを処理するように適切に設定されていない場合に、JavaがIPV6アドレスを使用しようとしたことが原因であると考えています。

次のプロパティを使用して、JavaにIPV4アドレスを使用させることができます。

-Djava.net.preferIPv4Stack = true

于 2013-02-27T06:43:09.910 に答える
1

私が気づいたことの1つは、URL接続が使用されていないことです... connect()を呼び出していません。それで問題が解決した場合はエラーメッセージに失望しますが、リクエストを行うまで応答コードを取得できない可能性があります。

http://docs.oracle.com/javase/6/docs/api/java/net/URLConnection.html

于 2013-02-27T06:27:29.210 に答える
0

私は同じ問題に直面しました.私のアンチウイルスはkasperskyです.これに対する解決策は、kapserksyを開く->設定->ウイルス対策保護->監視されたポート->選択です

于 2014-09-23T11:58:46.537 に答える
0

私は同じ問題に直面しました。私はwindows8 64でnetbeans7.4を使用しています。私のウイルス対策はカスペルスキーです。解決策は、ウイルス対策をオフにするか、ウイルス対策を一時停止してから、動作するコードを実行することです

import java.net.*;
import java.io.*;

public class URLReader {
    public static void main(String[] args) throws Exception {

        URL oracle = new URL("http://www.oracle.com/");
        BufferedReader in = new BufferedReader(
        new InputStreamReader(oracle.openStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);
        in.close();
    }
} 
于 2014-07-25T20:39:48.657 に答える
0

この問題が発生しましたが、ウイルス対策をシャットダウンしただけで動作しています。これは、ウイルス対策がポートをブロックしていることに関係しています。

于 2014-02-12T15:30:01.203 に答える
0

すべての Java プログラムを閉じて、run ( winkey+ R) を開くか、私のようなスタート ボタンがある場合は run を検索して書き込み-Djava.net.preferIPv4Stack=trueます。:)

于 2013-04-22T21:35:00.163 に答える
0

IPv4 アドレスとポート 0 でソケットを開こうとすると、このメッセージが表示されました。このメッセージが表示された場合は、使用されているポートを確認する必要があるかもしれません。

于 2018-04-26T15:30:46.003 に答える
0

Eclipseで問題なく動作します。間違いなく Nikolay のアドバイスに従い、ファイアウォールが実行されているかどうかを確認してください。この例外に関連して私が見たフォーラムの投稿は、何らかの形でこの状況に関連しています。

于 2013-02-27T06:20:21.223 に答える