5

Web サイトからファイルをダウンロードするためのコードをいくつか書きました。このコードは、テスト用の http URL に対して正常に動作します。URL を https に変更するとすぐに、接続タイムアウトが発生します。

System.setProperty("http.proxyHost","trproxy.rwe.com") ;
System.setProperty("http.proxyPort", "80") ;
Authenticator.setDefault (new MyAuthenticator("USER","PW"));
//URL url = new URL("http","www.treasury.gov",80,"/ofac/downloads/sdn.csv",new    sun.net.www.protocol.http.Handler());  THIS WORKS
URL url = new URL("https", "downloads.elexonportal.co.uk",443,"/bmradataarchive/download?key=MYKEY&filename="+filename,new sun.net.www.protocol.https.Handler());
url.openConnection();
InputStream reader = url.openStream();
FileOutputStream writer = new FileOutputStream("C:/downloads/"+filename);

https URL をブラウザーにコピーすると、ファイルを保存する場所を尋ねられますが、問題なく動作します。どんな助けでも大歓迎です。私はこれを試しまし たが、うまくいきませんでした

ありがとうクリス

4

3 に答える 3

4

証明書の問題が発生している可能性があります。これは通常、Java で HTTPS 接続を使用しているときに過去に遭遇した問題です。

まず、接続しようとしている URL に、既知の信頼できるルート CA による署名付き証明書があり、有効である (有効期限が切れていない) かどうかを確認する必要があります。

ブラウザで URL を開いて、証明書情報を確認することをお勧めします。

参考までに、ブラウザによって認識されるトラステッド ルート CA と Java によって認識される信頼されたルート CA の間に切断がある可能性があります。Java によって認識されるものを取得する方法に関する別の Stackoverflow の質問を次に示します。Javaで信頼されたルート証明書のリストを取得するにはどうすればよいですか?

これが自己署名証明書である場合、それをローカル キーストアにインポートして使用することに関してジャンプする必要があるフープがあります。これを行うためのガイドとなるサイトやブログは数多くありますが、そのようなブログの 1 つを次に示します (私のものではありません): Adding self-signed https certificates to Java keystore

また、ブラウザでテストしている間、これはプロキシの問題がないことを確認するのに役立ちます. ブラウザの設定を確認して、プロキシ サーバーを経由しているかどうかを判断する必要があります。

java.net.URL の代わりに HttpClient を使用することを検討する必要があります。HttpClient 4.2.1のApache ページは次のとおりです。

最後に、HTTP または HTTPS を介したファイル転送を検討している場合は、WebDAV を検討することをお勧めします。

これには、過去に Jakarta Slide WebDAV Client を使用しました。残念ながら、この時点で Slide は廃止されたようですが、少し検索すれば代替品を見つけることができます。

添加

ソース コード サンプルをコピーして、詳しく調べました。http のプロパティを設定しているようですが、https は設定していません。

HTTPS には個別のプロパティがあります。

  • https.proxyHost
  • https.proxyPort

設定してみてください:

System.setProperty("https.proxyHost","trproxy.rwe.com") ; 
System.setProperty("https.proxyPort", "443") ; 

Oracle の Java Networking and Proxies のセクション 2.2 を参照してください。

http://docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html

于 2012-08-29T18:16:36.707 に答える
1

問題はプロキシにあるようです。httpsもサポートする必要があります。また、ファイルのダウンロードには HttpClient 4 を使用する必要があります。これは、http 接続を確立するための成熟したライブラリです。

于 2012-08-29T16:22:46.063 に答える
0

System.setProperty("http.proxyPort", "80")する必要がありますSystem.setProperty("http.proxyPort", "443")

于 2012-08-29T18:49:24.683 に答える