2011-07-27 9 views
1

私はログインしたときにユーザー名とパスワードを挿入してからこのwebsiteにアクセスし、アカウントからデータを取得するためにjavaを使用してプログラムを作成しようとしています。グーグルで多くを検索していくつか試しました.これを達成するために多くの運があります。助言がありますか?Java経由でウェブサイトにログインしますか?

+0

どのようなエラーメッセージが表示されますか? – Jonas

+0

私は何のエラーも出ません。このメッセージは「HTPP POSTを成功裏に作成しました。」そして「Recevied Response is:」の後ろにページの内容が続きます –

+0

あなたが今使っているコードを見せてください。 – Marcelo

答えて

2

使用しているコードは古い技術です。 Commons HttpClientははるかに簡単で、より堅牢なオプションであり、数多くのサンプルとオンラインドキュメントがあります。あなたがRubyを嫌うのではないなら、私はWatirを混ぜて投げます。実際にコードを必要とせず、シンプルなレコード再生の自動化が必要な場合は、Seleniumが良い選択です。

0

言語の理解が不足している私はあなたに具体的なアドバイスをすることはできません。

ただし、ウェブページ上のフォームを確認する方法があります。その後、そこに定義されているサイトに投稿要求を送信することができます。

投稿体として、URLパラメータとして表示されるようにフォームのパラメータを送信します。

<!-- language: lang-js --> 
    String payload = "password=test&user=test" // password and user must be replaced with the names of the form fields and test with password and username respectively 
    HttpURLConnection configConnection = new URL(formTarget).openConnection(); 
    System.out.println("+------------------------------------------------------"); 
    System.out.println("| Request "); 
    System.out.println("+------------------------------------------------------"); 
    System.out.println("| URL: " + configConnection.getURL()); 
    System.out.println("+------------------------------------------------------"); 
    System.out.println("| Payload "); 
    System.out.println("+------------------------------------------------------"); 
    System.out.println(payload); 
    configConnection.setDoOutput(true); 
    configConnection.setRequestMethod("POST"); 

    configConnection.getOutputStream().write(payload.getBytes()); 
    InputStream xmlInputStream = configConnection.getInputStream(); 

    int _byte = -1; 
    ByteArrayOutputStream bios = new ByteArrayOutputStream(); 
    while ((_byte = xmlInputStream.read()) > -1) { 
     bios.write(_byte); 
    } 
    final byte[] responseBytes = bios.toByteArray(); 
    String responseString = new String(responseBytes); 
    System.out.println("+------------------------------------------------------"); 
    System.out.println("| Response "); 
    System.out.println("+------------------------------------------------------"); 
    System.out.println("| Code: " + configConnection.getResponseCode()); 
    System.out.println("+------------------------------------------------------"); 
    System.out.println(responseString); 
    System.out.println("+------------------------------------------------------"); 

より良いあなたは正しいXHTMLにそれを変換するためにtagsoupライブラリを使用することができ、出力を解析します。

+0

このようなメソッドはありません: 'write(String)' –

+0

configConnection.getOutputStream()。write(payload.getBytes()); //これを私の例から変更するのを忘れました – DoubleMalt

+0

'isCompressed()'はどうですか? –

関連する問題