- ベストアンサー
自動で取得したURLにアクセスする方法について
JAVAを始めたばかりの、 極端な弱小者ですが、 本で勉強しながらコツコツやっています。 今回、JAVAで以下内容を満たすプログラムを作ろうとしています。 下記1番は何となくプログラム内容が思いつくのですが、 下記2番の方法が分かりません。 キーワードが分からない事もあり、 探しても適切なものが見つからずに悩んでいます。 何か参考になるWEBサイトなど 教えていただけると大変ありがたいです。 一方的で大変恐縮ですが、宜しくお願い致します。 ■1:相手からの返された\"value\"の中に、「URLがあるか?」を調べる。 ↓ ■2:URLがあったら該当URL(もしくはIPアドレス)にアクセスし、 対象ファイルを自動的にダウンロード/保存する。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ホームページから送られてきたURLを使って、データをダウンロードするサーブレットは、 以下のような形になるんではないでしょうか。 -----ホームページ----- <html> <head><title>4034091</title></head> <body> <form action="http://localhost:8080/minnaservlet/4034091" method="GET"> <input type="text" name="value" value=""> <input type="submit" name="send" value="send"> </form> </body> </html> -----サーブレット----- package qa4034091; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class downl extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) { String Str1; byte buf[] = new byte[1024]; int Int1; try { res.setContentType("text/html"); PrintWriter PW = res.getWriter(); PW.println("<html><head><title>Download</title></head><body>"); if (((Str1 = req.getParameter("value")) != null) && (Str1.indexOf("http://") == 0)) { URL URL1 = new URL(Str1); HttpURLConnection Conn1 = (HttpURLConnection)URL1.openConnection(); InputStream IS1 = Conn1.getInputStream(); File File1 = new File("/works/javaserv/minnaservlet/Cash.txt"); FileOutputStream OS1 = new FileOutputStream(File1); while ((Int1 = IS1.read(buf)) >= 0) OS1.write(buf, 0, Int1); IS1.close(); OS1.close(); PW.println("Download<br>"); PW.println("From:" + Str1 + "<br>"); PW.println("To:" + File1.getAbsolutePath() + "<br>"); } else PW.println("NoURL"); PW.println("</body></html>"); } catch (Exception ex) { System.out.println(ex.toString()+ "::Get"); }; }; }
その他の回答 (1)
- _ranco_
- ベストアンサー率58% (126/214)
> ■1:相手からの返された\"value\"の中に、「URLがあるか?」を調べる。 相手って、何の相手ですか? Stringの中にURLを見つけることは、正規表現を使ってできるでしょう。 ↓ > ■2:URLがあったら該当URL(もしくはIPアドレス)にアクセスし、 > 対象ファイルを自動的にダウンロード/保存する。 java.net.URLおよびURLConnectionクラスを使ってできます。
お礼
ssr-y6さん ご回答遅れてしまいましえ失礼しました。 ご回答いただきましてありがとうございます。 確かに、ご提案いただきました内容にて、 意図を満たす事ができました。 こんなにご丁寧にありがとうございました。