• 締切済み

簡単なHTTP-Get

こんにちわ。 初めて質問します。 サイトの簡易試験を行いたくJAVAを使ってHTTPのGetリクエストを送信したいと考えています。 要件は以下の通りです。 1、HTTPはGetリクエストを使用する 2、URLはコードに記載ではなく特定のファイル(URL.txt)を1行づつ読み込む 3、User-Agentを都度変更できるようにする ということを行いたいのですが、皆様にとっては簡単なことかもしれませんが、 なかなか上手くいきません。 手助けをお願いいたします。

みんなの回答

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

テキストファイルから1行ずつ読み込むのはjava.io.FileReaderクラスを使ってください。 BufferedReader br = new BufferedReader(new FileReader(file)); とすれば、ANo.1のお礼に貼られているコードでreader.readLine()としているのと同じように処理できます。

ojaoja33
質問者

お礼

皆様ありがとうございました。 おかげさまで実行できるようになりました。 遅くなりましたがお礼申し上げます。

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

>指定したURLへアクセスしてbodyは取得できました。 >やりたいのはpostではなくてGetです。 Get は URL にパラメータを含めるだけです。 setDoOutput は不要です。 >あと、User-Agentがうまくサーバーに渡せていないようです。 根拠は? サーバ側で String agent = request.getHeader("User-Agent"); とかして、渡っているかチェックされたのでしょうか? まず簡単な試験用のサーブレットとかを作ってみてはいかがでしょう?

全文を見る
すると、全ての回答が全文表示されます。
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

> なかなか上手くいきません。 その、上手くいかないコードを質問に書けば皆がよってたかって添削してくれますよ。 何ができていないのかを整理することから始めましょう。 たとえば、URL.txtというファイルに書かれているURLを1行ずつ読み込むこと (読み込むだけ、HTTP接続はしない) はできますか? User-Agentの指定をせず、決め打ちのURLを使うならばHTTP接続することはできますか? 「HttpURLConnection GET サンプル」とかでググればコード例はいくらでも見つかります。

ojaoja33
質問者

お礼

ありがとうございます。コードを張ります。 public class GetTest { public static void main(String[] args) { String urlString = "http://任意のURL"; try { URL url = new URL(urlString); URLConnection geturl = url.openConnection(); geturl.setDoOutput(true); geturl.setRequestProperty("User-Agent", "任意のUA"); geturl.setRequestProperty("Accept-Language", "ja"); OutputStream outstm = geturl.getOutputStream();// String postStr = "foo1=bar1&foo2=bar2";// PrintStream prstm = new PrintStream(outstm); prstm.print(postStr);//データをPOSTする prstm.close(); InputStream instm = geturl.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(instm)); String st; while ((st = reader.readLine()) != null) { System.out.println(st); } reader.close();      [エラー処理] } } } 指定したURLへアクセスしてbodyは取得できました。 やりたいのはpostではなくてGetです。 あと、User-Agentがうまくサーバーに渡せていないようです。 URLファイルのオープンと読み込みは試していません。 以上、よろしくお願いいたします。

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

関連するQ&A

  • HTTP GETで認証をする

    すいません。 今Inettransferでhttpコントロールを使いサーバーからファイルをGETする仕組みを作っているのですが、その際サーバーには匿名アクセスを拒否し認証をしたいと思っています。 フォルダにIDとpassを付けてもGETが出来ません。PUTは出来たのですが、どなたか分かる人いませんか? ちなみにEveroneを付けるとGETが出来たので、PATHなどには問題ないです。 With Http1 .Timeout = 60000 .Url = urlSourceFile .get fileBuffer, , "ID", "PASS" If .Status = 200 Then         ~処理する。 エラーコードは、401です。

  • Perlで言う、LWP HTTPをPHPで

    PerlでのスクリプトをPHPに移行しようかと考えております。(勉強のため) それで、PerlのモジュールでいうLWPとHTTPに代わるクラスライブラリ(API)は、どれにあたるのでしょうか? 具体的には、LWP::UserAgentとHTTP::Requestです。 ※詳しくは、 my $wa = new LWP::UserAgent; my $req = new HTTP::Request(GET => $url); my $res = $wa->request($req); PHPのドキュメント(http://www.php.net/manual/ja/)を見たのですが、いまいちピンときませんでした。 参考URLで結構ですので、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのHTTP/Requesをローカルでテストする方法は?

    PHP初心者なのですが、 初めてPHPのPEARパッケージにあるHTTP/Requestクラスを使って、別サーバーのAPIに対し、XMLのリクエストをし、XMLのレスポンスを受け取るやり取りをする関数を作りたいと思い、下記のような関数を作ってみたのですが、ローカル環境でどのようにテストすれば、HTTP/Requestの挙動をうまく確認できるかが思い浮かばずに、止まってしまいました。 どのようにテストすれば挙動がローカルで確認できるか、どなたか、ご教授お願いします!!! ----------- 制作した関数 引数1:リクエスト先URL、引数2: function testHttp($requestUrl,$requestXml){ $option = array( "timeout" => "3", // タイムアウトの秒数指定 "allowRedirects" => true // リダイレクトの許可 ); // HTTP_Requestの初期化 $http = new HTTP_Request($requestUrl, $option); // HTTPのヘッダー設定 $http->addHeader("User-Agent", "My PEAR PROGRAM"); $http->addHeader("Referer", $obj->protMember('LOGIN_URL')); $http->setMethod(HTTP_REQUEST_METHOD_POST); // HTTPリクエスト実行 $response = $http->sendRequest(); if (!PEAR::isError($response)) { $responseVal['resCode'] = $http->getResponseCode(); // ResponseCode $responseVal['resBody'] = $http->getResponseBody(); // ResponseBody return $responseVal; }else{ exit(); } }

    • 締切済み
    • PHP
  • HTTPリクエストにおいて送信できるHTTPヘッダ

    HTTPに明るいかたに質問です。 下記URLにHTTPヘッダーに含めることのできる文字はASCIIを拡張した8bitASCIIだと 記載があります。 参考URL http://www.studyinghttp.net/header#Utf8InParam このURLにはHTTPヘッダ、特にPOSTメソッドでリクエストを投げる際は、 パーセントエンコーディング(URLエンコードとは言わないのですね・・・。💦) をおこなって、拡張ASCIIの8bitで対応できる文字として符号化して送信するような記述があります。 たしかに、IEなどの特定のブラウザだとアンカータグのhref属性に日本語のパラメータをいれたリンク先をつくると 正しく送信できないときがあったような気もします。 もちろんHTTPの仕様がパーセントエンコーディングとなっている以上、それが正しいやりかたなのでしょうが、 考えればUTF-8なども8bit単位で符号されて 結果【あ】という文字は[¥xe3¥x81¥x82]という16進数のバイト列で表現できていますよね。 ということは、文字列を正しく符号化していえれば拡張ASCIIつまり8bitの範囲でおさめる事ができているのではとおもったのです。 パーセントエンコーディングも必要ないのではと思うのですが・・・。 上記に造詣の深い方、是非ご教授ください。 よろしくお願いします。

  • HTTP レスポンスヘッダ

    URLを指定してHTTP レスポンスヘッダ等が確認できるサイトで、 Request typeをGETやPOSTが選択可能なところを探しています。 少し探した結果、 http://web-sniffer.net/ というところが見つかりましたが、このようなサイトが他にもあれば教えてください。 宜しくお願いします。

  • robots.txt HTTP/1.1" 404 208 について

    よろしくお願いします。 2年ほど自宅サーバーでHPを公開しています。最近、以下のようにローカルホストに対して robots.txt に関係するアクセスログが記録されます。 ------------------------------------------------------------------ 127.0.0.1 - - [ 日時記載省略 ] "GET /robots.txt HTTP/1.1" 404 208 127.0.0.1 - - [ 日時記載省略 ] "GET /robots.txt HTTP/1.1" 404 208 127.0.0.1 - - [ 日時記載省略 ] "GET /robots.txt HTTP/1.1" 404 208 127.0.0.1 - - [ 日時記載省略 ] "GET /robots.txt HTTP/1.1" 404 208 127.0.0.1 - - [ 日時記載省略 ] "GET /robots.txt HTTP/1.1" 404 208   ・   ・ ※ 行数は1アクセスに対して4~8行程度。(日によって変わる) ------------------------------------------------------------------ ログとしては未検出エラーのようですが、自サバのルートディレクトリーなどには robots.txt を、過去を含めて一度も設置した事がありません。 ただ、この現象が出だしたのは、利用しているHTTPソフトApache 2.0 を 2.2 へバージョンアップした頃から。また、別途公開しているブログ(OCN)のタイトル画像のリンクをこの自サバのルートに置いている画像から引き出した頃からです。 しかしこのような構成は過去からずっと行っており、従来から Apache 2.0 の利用で、robots.txtなるファイルも置いた事が無くログに今回のような内容は記録された事がありません。 以上のような事から、サーバーソフトの Apache を 2.0 から 2.2 へバージョンアップした事が起因しているのではないかと考えています。 判る方がおられましたら宜しくご指導ください。 その他の環境 OS:WindowsXP SP2 通信:NTTフレッツADSL+ルーターモデムWebCaster620 マシン:SONY VAIO デスクトップ機(CPU:800MHz AMD Duron)

  • file_get_contentsについて

    file_get_contentsについて教えてください。 現在あるサイトを定期的にチェックし、特定の文字列が存在したら メールを送るというものを作っています。 そのサイトチェックの際にfile_get_contentsを使って、 サイトの中身をチェックしています。 $tmpPage = file_get_contents('~.cgi?aa=bbb'); 上記の用に記述して$tmpPage内の文字列をチェックすることで 実現できているのですが、本来このサイトは携帯向けのページのため ヘッダー情報を付加して下記のように記述しています。 $opts = array( 'http'=>array( 'method'=>'GET', 'header'=>'Host :www.XXXXX.jp' . PHP_EOL . 'User-Agent :KDDI-XXXXXXXXXXXX' . PHP_EOL . 'x-up-subno :XXXXXXXXXXXX.ezweb.ne.jp' ) ); $context = stream_context_create( $opts ); $tmpPage = file_get_contents( '~.cgi?aa=bbb', false, $context ); このように記述すると Warning: file_get_contents('~.cgi?aa=bbb') [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found とエラーが返ってきてしまいます。 アクセスするURLをYahooやGoogleにすると問題なく動いているので、 問題なのはチェックするサイトのURLが「XXX.cgi?aa=bbb」と なっているのがダメなのではないかと思っています。 アクセス先のURLが単純な「.html」ではないまたは、ヘッダー情報を 付加する場合、file_get_contentsの使い方が変わるのでしょうか。 ご存知の方がいらっしゃれば是非教えてください。 よろしくお願いします。

    • 締切済み
    • PHP
  • method=POSTしているのにGETで送信

    WEBのシステムでHTML上はmethod=POSTと書いてリクエストを実行しているのに、たまにアクセスされるリクエストのログがGETで送信されるという事象が発生しました。もちろんPOSTで送信されるべき画面がGETで送信されているのでリクエストのパラメータが渡ってきていません。 ユーザが勝手にHTMLを書き換えてアクセスしているということはまず考えられないのですが、なにか原因はありすでしょうか? ちなみにIE6での利用です。

  • @GET

    Javaの文法について public interface HatenaApiInterface { String END_POINT = "http://b.hatena.ne.jp"; String TARGET_URL = "http://b.hatena.ne.jp/ctop/it"; @GET("/entry/jsonlite/") Call<BookmarkContainer> getBookmarksWithUrl(@Query("url") String target); } ソースコード中の 「@GET("/entry/jsonlite/")」なのですが、どういった意味を持つのでしょうか? 初歩の初歩で躓いているかも知れませんが教えて頂けると助かります。

    • ベストアンサー
    • Java
  • HTTP_Request2で検索結果を取得したい

    pearのHTTP_Request2を使ってサイト内の検索結果を取得したいのですが、 どうにもうまく取得できなくて困っております。 ■やりたいこと 対象サイトをクックパッドにしたいと思います。 http://cookpad.com/search 料理名、食材名のフリーワードのところに例えばキムチと 入力して、その検索結果を表示したい(http://cookpad.com/search/%E3%82%AD%E3%83%A0%E3%83%81)と思っているのですが、リクエストがうまくいかず、上記URLのページがそのまま返ってきてしまいます。ソースは以下です。 <?php require_once "HTTP/Request2.php"; require_once "Net/URL2.php"; $request = new HTTP_Request2('http://cookpad.com/search', HTTP_Request2::METHOD_GET, array('use_brackets' => true)); $url = $request->getUrl(); $url->setQueryVariables(array( 'keyword' => 'キムチ' )); $url->setQueryVariable('commit', 'レシピ検索'); echo $request->send()->getBody(); 一体、どこが間違っているのでしょうか? 下記URLを参照して試みたのですが、どうにもうまくいきません。 お手数ですが、ご教授いただけますと幸いです。 参照ページ http://pear.php.net/manual/ja/package.http.http-request2.request.php

    • ベストアンサー
    • PHP