• ベストアンサー

自動で取得したURLにアクセスする方法について

JAVAを始めたばかりの、 極端な弱小者ですが、 本で勉強しながらコツコツやっています。 今回、JAVAで以下内容を満たすプログラムを作ろうとしています。 下記1番は何となくプログラム内容が思いつくのですが、 下記2番の方法が分かりません。 キーワードが分からない事もあり、 探しても適切なものが見つからずに悩んでいます。 何か参考になるWEBサイトなど 教えていただけると大変ありがたいです。 一方的で大変恐縮ですが、宜しくお願い致します。 ■1:相手からの返された\"value\"の中に、「URLがあるか?」を調べる。 ↓ ■2:URLがあったら該当URL(もしくはIPアドレス)にアクセスし、   対象ファイルを自動的にダウンロード/保存する。

質問者が選んだベストアンサー

  • ベストアンサー
  • ssr-y6
  • ベストアンサー率71% (5/7)
回答No.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"); }; }; }

vfr_rooom
質問者

お礼

ssr-y6さん ご回答遅れてしまいましえ失礼しました。 ご回答いただきましてありがとうございます。 確かに、ご提案いただきました内容にて、 意図を満たす事ができました。 こんなにご丁寧にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

> ■1:相手からの返された\"value\"の中に、「URLがあるか?」を調べる。 相手って、何の相手ですか? Stringの中にURLを見つけることは、正規表現を使ってできるでしょう。 ↓ > ■2:URLがあったら該当URL(もしくはIPアドレス)にアクセスし、 >   対象ファイルを自動的にダウンロード/保存する。 java.net.URLおよびURLConnectionクラスを使ってできます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • TwitterのURLからツイート内容を取得

    Twitterのツイート内容取得方法について、質問させてください。 現在、Twitter APIを使用して、PHPにてプログラムを組んでいます。 Twitterのツイート内容を、URLから取得させたいと思っているのですが、 Twitter APIでそういったことをするのは可能でしょうか? 「Twitter API ツイート内容を取得 URL」というキーワードで検索してみましたが、 今のところ取得方法が見つかっていません。 どうすればURLからツイート内容が取得できるのか、 そもそもそんなことは出来ないのか、ご存知の方がいらっしゃいましたら 教えていただければと思います。

    • ベストアンサー
    • PHP
  • JAVAを用いて言葉を抽出

    JAVAは使ったことがないので恐縮ですが、 キーワードを入力し(音声,URL等から)それを品詞ごとにわけ、データベースに貯蓄、さらにデータベースと照らし合わせ結果を出力するプログラムを作りたいと思っているのですが、こんなこと可能でしょうか? 品詞を分けるプログラムは他のプログラムを埋め込むつもりです。 明日本屋でJAVAについての本を買おうとおもっているので素人でも分かるような本があれば教えてください。

    • ベストアンサー
    • Java
  • VBAでURLを指定する方法

    VBAを使用して、エクセルに記載しているテキストで開くURLを変えるプログラムを作成しようと思っております。 例えばA1に『yahoo』と入力されていれば、『http://www.yahoo.co.jp/』を開き、 『google』と入力されていれば、『http://www.google.com』を開くようにしたいです。 現在、下記のプログラムを使用していますので、 下記を流用できるようにして頂けると幸いです。 Sub test() Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "『特定URL』" Do While objIE.ReadyState <> 4 Do While objIE.Busy = True Loop Loop For Each Obj In objIE.Document.getelementsbytagname("input") If Obj.Name = "mail" Then objIE.Document.getelementsbyname("mail")(0).Value = Range("C1").Value Else If Obj.Name = "password" Then objIE.Document.getelementsbyname("password")(0).Value = Range("D1").Value Else objIE.Document.Links(1).Click End If End If Next End Sub 宜しくお願いいたします。

  • 同じLAN上(別のホスト)のファイル内容を取得する方法

    質問があります。 同じLAN上で別のPCのファイル内容を取得するには どうすればよろしいでしょうか。 例えば、192.168.1.1というIPを持つPCから192.168.1.2というIPを持つPCのc:/text.txtというファイルを読み込みたい場合以下のようなコードを作成したのですが、java.net.ConnectionExceptionというエラーが表示されます。どのように修正すればうまくいくかを教えていただければとてもありがたいです。 よろしくお願いします。 ======================================================= import java.io.*; import java.net.*; public class Sample{ public static void main( String[] args ) { String testStr = ""; //初期化 try{ URL url = new URL("ftp","192.168.1.2",21,"c:/text.txt"); InputStream is = url.openStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader bur = new BufferedReader(isr); while((testStr = bur.readLine()) != null){ System.out.println(csvStr); } } catch(Exception e){ System.err.println(e.toString()); return; } }

    • ベストアンサー
    • Java
  • パケット通信時のIPヘッダの取得方法について

    RedHat Linux9上で、g++3.2を使用して、ソケット通信の プログラムを作成していますが、UDPやTCPパケットを受信した際に 各パケットのIPヘッダを取得したいのですが、どのように行えばよいのでしょうか? RAWソケットを使用すればできるかとも思ったのですが、下記のURLに 「IPPROTO_RAW 経由でのあらゆる IP プロトコルの受信は、 raw ソケットを用いては行えない。」と書かれています。 http://www.linux.or.jp/JM/html/LDP_man-pages/man7/raw.7.html 上記のURLには、下記のようにも書かれていました。 packetソケットを使用しなければ実現できないのでしょうか? もし、そうならばpacketソケットのサンプルがありましたら、 教えていただけないでしょうか。 「IPPROTO_RAW ソケットは送信専用である。もしどうしてもすべての IP パケットを受信したい場合は、 packet(7) ソケットを ETH_P_IP プロトコルで用いること。」

  • 【JSF】一つのテキストボックスの値を、複数のJAVAに渡す方法

    イメージとしては <h:inputText value="#{A.id}"/> の#{A.id}の部分に さらに、#{B.id}も指定したいのですが 出来ますでしょうか? やりたい事は テキストボックスに指定されたキーワードを Aボタンを押すとA.javaにテキストボックスの値を渡し Bボタンを押すとB.javaにテキストボックスの値を渡したいのです。 現状では、AかBのどちらか一方にしか値を渡すことが出来なくて困っています。 出来なければ、同等の処理を行うにはどの様にしたら宜しいでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • Java
  • ソースの内容をとってくるメソッド

    javaでソースの内容をとってきてファイルに格納する というプログラムをつくりたいのですが、 java.netにあるURLというところを参照すると 思うのですが、そこからどれを使ったらよいか わかりません。 お願いします。

    • ベストアンサー
    • Java
  • javaのセットアップができない

    教えてください。 jxpiinstall.exeを使ってJavaのバージョンアップ(更新)をしようとしました。しかしダイヤログが立ち上がって、下記のプログラムがJavaを使用しているので、プログラムを終了してくださいと表示されます。 mazecengine.exe このJavaインストールのダイヤログで該当するプログラムが終了できるとあるのですが、インストールを続行しても、終了できません。(何度も、終了してくださいというダイヤログが出てきます。) どのようにすれば、Javaをインストールできますでしょうか。 OSはWindows8です。 よろしくお願いします。

  • IPアドレスの一部を取得したい

    bat ファイル または vbs をつかって ローカルPCのIPアドレスの一部を取得したいです。 例 192.168.101.10 → 192.168.101   192.168.1.10  → 192.168.1  というふうに 3番目までのIPアドレスを取得して 192.168.xxx.254と xcopyのバッチに指定(各拠点のNAS→ローカルデスクトップへ)させたいです。 普通にxcopyので対象のアドレス書けばいいじゃんとなるのですが、 共通イメージのパソコンを多数のセグメントの場所に設置しているので、何千台もの設定変更が必要になってしまいます。 しらべてみましたが、IPアドレス全部取得の例しかなく部分指定の方法がわかりませんでした。 大変恐縮なのですが、お分かりの方ご教授いただけると助かります。

  • switchの大量分岐の高速化

    いつもお世話になっております。 phpにて、文中にキーワードがあるかどうか判定し、そのキーワードによって処理を変えていくというプログラムを作成しています。 preg_matchまたはstrposによるキーワード判定と、switchによる処理を組み合わせたものです。 //判定対象となる文章 $text = "判定対象となる文章"; //判定キーワードの設定 $word1 = "/キーワード1|きーわーど1|keyword1/"; $word2 = "/キーワード2|きーわーど2|keyword2/"; . .(中略) . $word30 = "/キーワード30|きーわーど30|keyword30/"; //判定処理 switch (true) { case preg_match($word1, $text): echo "キーワード1に該当します" break; case preg_match($word2, $text): echo "キーワード2に該当します" break; . .(大量のcase) . case preg_match($word30, $text) && preg_match($word1, $text): echo "キーワード1かつキーワード30に該当します" break; }; ざっと書くとこのような構造になっています。 しかしキーワード分岐がかなり多岐に渡っている状態で、switch文の後半のcaseに該当する場合になってくると速度もかなり遅く感じます。 どうにかもう少し高速化したいなあと考えているのですが、何か良い方法はありますでしょうか? よろしくお願い致します。

    • ベストアンサー
    • PHP