0

組み込みデバイスで実行されているWebサーバーからバイナリファイルをダウンロードしたい。そのファイルは、そのURLを使用して、基本http認証の後に手動でダウンロードできますhttp://10.10.10.10/config.bin。...ここで、単純なJavaアプリケーションを使用してこのプロセスを自動化します。基本的なJavaツールを使用して、ファイルをダウンロードすることができました。

URL mlrrl = new URL(url);
            HttpURLConnection  con = (HttpURLConnection) mlrUrl.openConnection();

            con.setRequestMethod("GET");
            con.setAllowUserInteraction(false);
            con.setDoInput(true);
            con.setDoOutput(true);
            con.setConnectTimeout(10000);
            con.setRequestProperty("Authorization", "Basic " + authStringEnc);

            InputStream stream = con.getInputStream();
            BufferedInputStream in = new BufferedInputStream(stream);
            FileOutputStream file = new FileOutputStream("configDown.bin");
            BufferedOutputStream out = new BufferedOutputStream(file);
            int i;
            while ((i = in.read()) != -1) {
                out.write(i);
            }
            out.flush();

それはうまくいったようです!手動で(ブラウザ-Webインターフェイスによって)ダウンロードされたファイルと比較すると、生成されたファイルの長さは同じですが、両方のバイナリを16進エディタで開いた後は異なっていました。

私の質問:

  1. 16進コードが異なる理由はありますか?(接続プロパティが欠落している可能性がありますか?)
  2. apache.commonsパッケージにはcopyUrlToFile-Methodがあります。代わりに、基本的なhttp認証で使用することは可能ですか?
  3. URLからファイルをダウンロードするための他のJavaライブラリまたはツールはありますか?
4

2 に答える 2

1

(非推奨の)Apache Commons HttpClient(http://hc.apache.org/httpclient-3.x/)を使用するIMHOは、これを行う最も簡単な方法です。または、新しく(おそらく)改善されたHttpComponents(http://hc.apache.org/)を使用することもできます。

于 2013-02-12T11:52:53.363 に答える
0

理由を説明することはできませんが、誤ったプロパティ "setDoOutput" = "true"が、ダウンロードされたファイルのコンテンツに影響を与えた可能性があります。値を「false」に設定すると、その問題が解決しました。

于 2013-02-12T11:42:37.540 に答える