2017-12-13 62 views
1

HtmlUnit 2.11を使用してWebサイトからファイルをダウンロードしようとしています。しかし、私はUnknownHostExceptionを取得しています。以下のコードと完全なスタックトレースは次のとおりです。スレッド "main"の例外java.net.UnknownHostException

コード:

final WebClient webClient = new WebClient(
       BrowserVersion.INTERNET_EXPLORER_8); 

     URL Url = new URL("https://340bopais.hrsa.gov/reports"); 

     HtmlPage page = webClient.getPage(Url); 
     HtmlSubmitInput button = page 
       .getElementByName("ContentPlaceHolder1_lnkCEDailyReport"); 

     final HtmlPage page2 = button.click(); 

例外トレース:

Exception in thread "main" java.net.UnknownHostException: 340bopais.hrsa.gov 
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) 
    at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source) 
    at java.net.InetAddress.getAddressesFromNameService(Unknown Source) 
    at java.net.InetAddress.getAllByName0(Unknown Source) 
    at java.net.InetAddress.getAllByName(Unknown Source) 
    at java.net.InetAddress.getAllByName(Unknown Source) 
    at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45) 
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.resolveHostname(DefaultClientConnectionOperator.java:278) 
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:162) 
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294) 
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640) 
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) 
    at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:171) 
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1484) 
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1402) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:304) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:373) 
    at src.main.java.DataDownloader.main(DataDownloader.java:30) 
+2

はあなたのコマンドプロンプトからそのURLをpingすることができますか? –

+0

URLのIPアドレスを知ることができません: 'https:// 340bopais.hrsa.gov/reports' –

+0

@khAn、私は次のコマンドを試しました:ping 340bopais.hrsa.gov。応答は:Ping要求はホスト340bopais.hrsa.govを見つけることができませんでした。名前を確認してもう一度お試しください。また、 "tracert 340bopais.hrsa.gov"は次の結果を示しました:ターゲットシステム名340bopais.hrsa.govを解決できません。 –

答えて

1

PING(パケットインターネット痴漢)ICMP(インターネット制御管理プロトコル)プロトコルであります。

HTTPSはトランスポートプロトコルです。

多くのネットワークプロバイダーとサービスマネージャーは、必要なプロトコルとポートに対してのみリソースへのアクセスを制限します。

340bopais.hrsa.govをホストしている組織が、ファイアウォールやその他のネットワークインフラストラクチャを構成して、ポート80と443のTCPトラフィックのみをサーバーに許可する可能性があります。


更新:

私は成功し、Java、およびセレンを使用してファイルをダウンロードしました。コード全体をrepositoryにして、自分のコードをダウンロードできます。しかし、ここで私はそれで動作するようにどのようにそれを説明する:

  1. は、Mavenプロジェクト

  2. resourceフォルダ

  3. ダウンロードthischrome.exedriverというフォルダを追加するために、あなたのEclipseを使用しますそれをドライバフォルダに入れてください。

  4. はあなたpom.xmlにこの依存関係を追加します。

    のpublic static無効メイン(文字列[] args){

     File file = new 
             File(StackApplication.class.getClassLoader().getResource("driver/chromedriver.exe").getFile()); 
          String driverPath=file.getAbsolutePath(); 
          System.out.println("Webdriver is in path: "+driverPath); 
          System.setProperty("webdriver.chrome.driver",driverPath); 
    
          WebDriver driver=new ChromeDriver(); 
          driver.navigate().to("https://340bopais.hrsa.gov/reports"); 
          driver.findElement(By.xpath("//*[@id=\"headingTwo\"]/h4/a")).click(); 
          driver.findElement(By.xpath("//*[@id=\"ContentPlaceHolder1_lnkCEDailyReport\"]")).click(); 
    
    
    
        } 
    
:メインメソッドの型に

<dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>3.4.0</version> 
    </dependency> 
  • そしてそれは魅力のように動作します

  • +0

    それは次の部分@サルマンです。コードはウェブサイト自体に接続できません。 –

    +0

    こんにちは@Salman、Javaを使用してこのWebサイトに接続する方法を教えてください。 –

    +0

    は 'selenium'で、' java'は受け入れられる答えですか? – Salman

    0

    私はこのウェブサイトのセキュリティ証明書に問題があると思います。私はあなたのURLをブラウザから実行しようとしましたhttps://340bopais.hrsa.gov/reports

    デフォルトでは、URLクラスを使用してHTTPS URLにアクセスすると、サーバーの証明書チェーンを検証できない場合には例外が発生し、以前はトラストストアにインストールされていませんでした。テスト目的で証明書の検証を無効にする場合は、デフォルトの信頼マネージャをすべての証明書を信頼するもので上書きする必要があります。

    あなたの問題を解決することができるこの方法を試してください。

    // Create a trust manager that does not validate certificate chains 
    TrustManager[] trustAllCerts = new TrustManager[]{ 
    new X509TrustManager() { 
        public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
         return null; 
        } 
        public void checkClientTrusted(
         java.security.cert.X509Certificate[] certs, String authType) { 
        } 
        public void checkServerTrusted(
         java.security.cert.X509Certificate[] certs, String authType) { 
        } 
    } 
    }; 
    
    // Install the all-trusting trust manager 
    try { 
        SSLContext sc = SSLContext.getInstance("SSL"); 
        sc.init(null, trustAllCerts, new java.security.SecureRandom()); 
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 
        } catch (Exception e) { 
    } 
    
    // Now you can access an https URL without having the certificate in the truststore 
    try { 
        URL url = new URL("https://yourwebsite/example.html"); 
    } catch (MalformedURLException e) { 
    } 
    
    +0

    ありがとう@Amol Raje、ウェブサイトのSSL証明書をJavaキーストアに追加しました。それでも、私はあなたの解決策を明日試して見ます。 –

    +0

    こんにちは@Amol Raje、あなたのコードを使用しました。ただし、同じ例外が発生しています。 –

    +0

    ok ..コードを削除し、 'https:// 340bopais.hrsa.gov'のみを確認する –

    関連する問題