• ベストアンサー

javaでクッキーを取得したい

以下ソースで、ホームページのデータは取得できるのですが、クッキーが必要なページではうまく作動しません。 どのように改良すればよいでしょうか? また、こういったプログラムを作るのに参考になる書籍をご存知でしたら教えてください。 よろしくお願いいたします。 import java.io.*; import java.net.*; class test { public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.yahoo.co.jp"); in = new BufferedReader(new InputStreamReader(url.openStream(),"JISAutoDetect")); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

  • Java
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.3

おそらくクッキーの情報をサーバーへ返していないため、 サーバー側はクッキーの設定が無効だといってきたのだと思います。 もしかしたら、クッキーの仕組みをご存じないのでは?

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

#1に関してですが、 それは、ブラウザの側の設定だと思いますが 例えば、IEでは、インターネットオプションのプライバシー設定を最高にするとクッキーの使用が無効になります。 これをサイトの側で変更することはできません。 ていうかできたらおかしいです。 イヤでしょ

  • aton
  • ベストアンサー率47% (160/334)
回答No.1

java.net.URL.openStream() ではなく,java.net.URL.openConnection() で java.net.HttpURLConnection を取得し,java.net.HttpURLConnection.getHeaderField() や java.net.HttpURLConnection.getHeaderFields() を使ってヘッダ情報からcookieを取り出せばよいのではないでしょうか。 >また、こういったプログラムを作るのに参考になる書籍をご存知でしたら教えてください。 書籍ではありませんが,オープンソースのJava製HTTPクライアントを作っている Jakarta Slide というプロジェクトがあるので,そのソースを参考にしてみてはどうでしょうか。

参考URL:
http://jakarta.terra-intl.com/slide/
tihiro_t
質問者

補足

回答いただきありがとうございます。 すみません。質問の仕方が間違っていました。 先のファイルを実行すると、某ページで、下記のようなエラーが出て正常に表示されません。そこで、何とか、クッキーが有効になっている状態にしたいのですが方法がわかりません。 <<<<エラー内容>>>> 現在お使いのブラウザの設定ではログインできません。<br>(クッキーを無効にする設定になっています) <<<<>>>> また、参考サイトを教えていただきありがとうございます。しかし、残念ながら、私のレベルでは何を言っているのかさっぱりでした。もしよろしければ、入門に適しているサイトや書籍を教えていただけましたら幸いです。 よろしくお願い致します。

関連するQ&A

  • javaのエンコードについて?

    下記のプログラムでホームページの情報は読み取ることができるようになったのですが、一部ホームページ(UTF-8エンコードのホームページと思われる)、文字化けを起こして見ることができません。 解決する方法を、教えていただけないでしょうか? おねがいいたします。 import java.io.*; import java.net.*; class test{ public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.faireal.net/"); in = new BufferedReader(new InputStreamReader(url.openStream(),"JISAutoDetect")); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

    • ベストアンサー
    • Java
  • javaのエンコードについて?

    さまざまなホームページを探して、下記のプログラムでホームページの情報は読み取ることができるようになったのですが、文字化けを起こして見ることができません。 何をどうすれば文字化けを防げるのかまったくわかりません。 ご存知の方、おしえていただけないでしょうか? おねがいいたします。 import java.io.*; import java.net.*; class test{ public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.yahoo.co.jp/"); in = new BufferedReader(new InputStreamReader(url.openStream())); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

    • ベストアンサー
    • Java
  • javaについて>IEのクッキーを使いたい

    IEでログインした状態であれば、ヤフーメールなどクッキーを使うHPにアクセスできるかと思ったのですがアクセスできません。どうすればよいでしょうか? 多分、javaはIEのクッキーを利用していないのですよね・・・ 何とか、IEのクッキーを利用できれば良いのですが。何か、良いお知恵はありませんでしょうか? 宜しくお願い致します。 以下、コードです。 ーーーーーーーーーーーーーーーーーーーーーーー import java.io.*; import java.net.*; class Test { static String input() throws IOException { InputStream is = new FileInputStream("url.txt");//urlを入力 BufferedReader br = new BufferedReader(new InputStreamReader(is)); String str = br.readLine(); return(str); } static void read(String str) throws IOException { OutputStream os = new FileOutputStream("log.txt",true); BufferedWriter fr = new BufferedWriter(new OutputStreamWriter(os)); URL url = new URL(str); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(),"JISAutoDetect")); for (;;) { String i = in.readLine(); if(i == null) { break; } System.out.println(i + "\n"); fr.write(i + "\n"); } in.close(); fr.close(); } public static void main(String[] args) throws IOException { Test brow = new Test(); brow.read(brow.input()); } }

    • ベストアンサー
    • Java
  • Java での グローバルIP取得

    Java を利用してグローバルIPの取得方法を探しています。 以下のサイトを参考にいたしました。 http://stackoverflow.com/questions/2939218/getting-the-external-ip-address-in-java 文中中ほどの以下のソースを試したのですが「checkip.amazonaws.com」と通信を行うせいか、ワンテンポページ表示に時間がかかります。 JavaでのグローバルIP取得するには他に良い方法はあるのでしょうか? それとも、whatismyipのようなサイトと通信を行わないとできないのでしょうか? よろしくお願い致します。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class IpChecker { public static String getIp() throws Exception { URL whatismyip = new URL("http://checkip.amazonaws.com"); BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader( whatismyip.openStream())); String ip = in.readLine(); return ip; } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } }

  • 今勉強中のjavaで。わからないことがあります。

    import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); int num =Integer.parseInt(str1); System.out.println("あなたは" + num +"歳です。"); } } ------------------------------- import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("あなたは" + str1 +"歳です。"); } } なぜ下では悪いのですか?なぜnum をつかないといけないかがわかりません。正確には str1とnumの違いがわからなくて困っています。何が混乱の原因ですか?

    • ベストアンサー
    • Java
  • JavaでString型をChar型に変換するプログラムが分かりません

    JavaでString型をChar型に変換するプログラムが分かりません;; どなかた助けて下さい。 下のプログラムの何がいけないんでしょうか?? いろいろ間違ってるところはあると思うんですが、教えて下さい! import java.io.*; class { public static void main(String args[]) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); StringBuffer moji = new StringBuffer(str1); char nyuu=moji;

  • 「プログラミング」JAVAのエラーが解決できません。

    ホームページを見たり、メールチェックをしたり、数分間このプログラムを走らせると、 Address already in use: connect java や Connection refused: connect といったエラーメッセージが出ます。 どうすれば、解決するでしょうか? やさしいJAVAやインターネットで調べたのですが良い方法が分かりません。ぜひ、ご教示宜しくお願い致します。 import java.net.*; import java.io.*; import java.util.*; import java.text.*; class Test { public static void main(String[] args) throws Exception { String helloURL; for(int a=1; a<3000; a++) { helloURL = "http://shopping.yahoo.co.jp/"; Th th1 = new Th(helloURL); th1.start(); Thread.sleep(100); } } } class Th extends Thread { String helloURL = null; String line; Th(String str) { this.helloURL = str; } public void run() { try { URL url = new URL(helloURL); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(),"JISAutoDetect")); while ((line = in.readLine()) != null) { try { OutputStream os = new FileOutputStream("log.txt",true); BufferedWriter fr = new BufferedWriter(new OutputStreamWriter(os)); if(line.indexOf("ヤフー") != -1) { fr.write(line); } if(line.indexOf("あ") != -1) { fr.write(line); } fr.close(); os.close(); } catch(Exception e){System.out.println("エラー1 : "+e.getMessage());} } in.close(); } catch(Exception ex){System.out.println("エラー2 : "+ex.getMessage());} } }

    • ベストアンサー
    • Java
  • 下記のようなjavaのプログラムで、* や / を入力しても,

    下記のようなjavaのプログラムで、* や / を入力しても, 必ず判定がfalseのほうになるんですけど、どうすれば良いですか? あまりjavaには詳しくないので、分かりやすく教えていただければ幸いです。お願いします。 import java.io.*; public class test{ public static void main(String[] args) throws IOException{ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String a; a = input.readLine(); if((a == "*") ^ (a == "/")){ System.out.println("OK"); }else{ System.out.println("エラー"); } } }

    • ベストアンサー
    • Java
  • 文字コードを変換する

    //このプログラムは、指定されたURLのソースを読むプログラムです。 import java.io.*; //入出力のAPIを実装するのに用います。 import java.net.*; //ネットワークに関するAPIを実相するのに用います。 import java.lang.*; class rss { public static void main(String args[]) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.println("読み込みたいRSSのURIを入力してください。"); String address = br.readLine(); //URLを標準入力から読み込みます。 URL url = new URL(address); InputStream uin = url.openStream(); BufferedReader in = new BufferedReader(new InputStreamReader(uin)); String source; //ソースファイル一行を格納する文字列変数です。 //指定したURLのソースファイル標準出力します。 while((source = in.readLine()) != null ){ System.out.println(source); } } catch(IOException e){ System.out.println("ソースを読みこめませんでした。"); } } } というプログラムを作ったのですが、 一部のソースファイルが文字化けを起こします。 そのソースがどの文字コードでできているか? そして、それをどうやったら変換したらいいかを 教えてほしいのです。 お願いします。

    • ベストアンサー
    • Java
  • javaについて

    こういうプログラムを組んだんですが、うまく実行できません。 どんな改善をしたらよいでしょうか? import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class Sample { public static void main(String[] args) { String htmlSrc = getHTMLSrc("http://search.yahoo.co.jp/search?p=java", "UTF-8"); htmlSrc = htmlSrc.replaceAll("<.+?>| ", ""); htmlSrc = htmlSrc.replaceAll(".*件-", ""); htmlSrc = htmlSrc.replaceAll("秒.*", "秒"); System.out.println(htmlSrc); } private static String getHTMLSrc(String strURL, String charSet) { StringBuffer sb = new StringBuffer(); HttpURLConnection conn = null; BufferedReader br = null; try { URL url = new URL(strURL); conn = (HttpURLConnection)url.openConnection(); InputStreamReader isr = new InputStreamReader(conn.getInputStream(), charSet); br = new BufferedReader(isr); String tmp = ""; while ((tmp = br.readLine()) != null) { sb.append(tmp); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) { br.close(); } if (conn != null) { conn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } } 以下のエラーが表示されるんですが、どうしたらよいでしょうか?? 環境が悪いのでしょうか?? java.net.ConnectException: Operation timed out

    • ベストアンサー
    • Java

専門家に質問してみよう