アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちわ。
初めて質問します。

サイトの簡易試験を行いたくJAVAを使ってHTTPのGetリクエストを送信したいと考えています。
要件は以下の通りです。

1、HTTPはGetリクエストを使用する
2、URLはコードに記載ではなく特定のファイル(URL.txt)を1行づつ読み込む
3、User-Agentを都度変更できるようにする

ということを行いたいのですが、皆様にとっては簡単なことかもしれませんが、
なかなか上手くいきません。

手助けをお願いいたします。

A 回答 (3件)

> なかなか上手くいきません。



その、上手くいかないコードを質問に書けば皆がよってたかって添削してくれますよ。

何ができていないのかを整理することから始めましょう。
たとえば、URL.txtというファイルに書かれているURLを1行ずつ読み込むこと (読み込むだけ、HTTP接続はしない) はできますか?
User-Agentの指定をせず、決め打ちのURLを使うならばHTTP接続することはできますか?

「HttpURLConnection GET サンプル」とかでググればコード例はいくらでも見つかります。
    • good
    • 0
この回答へのお礼

ありがとうございます。コードを張ります。

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ファイルのオープンと読み込みは試していません。

以上、よろしくお願いいたします。

お礼日時:2012/05/02 10:17

>指定したURLへアクセスしてbodyは取得できました。


>やりたいのはpostではなくてGetです。

Get は URL にパラメータを含めるだけです。
setDoOutput は不要です。

>あと、User-Agentがうまくサーバーに渡せていないようです。

根拠は? サーバ側で

String agent = request.getHeader("User-Agent");

とかして、渡っているかチェックされたのでしょうか?

まず簡単な試験用のサーブレットとかを作ってみてはいかがでしょう?
    • good
    • 0

テキストファイルから1行ずつ読み込むのはjava.io.FileReaderクラスを使ってください。


BufferedReader br = new BufferedReader(new FileReader(file)); とすれば、ANo.1のお礼に貼られているコードでreader.readLine()としているのと同じように処理できます。
    • good
    • 0
この回答へのお礼

皆様ありがとうございました。

おかげさまで実行できるようになりました。
遅くなりましたがお礼申し上げます。

お礼日時:2012/05/08 09:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!