0

私はJavaでプログラムを書いていますが、フォームの指定されたフィールドに入力し、送信クリックをシミュレートしたいので、結果ページを取得します。http://stu21.kntu.ac.ir/Login.aspx 2つのフィールドtxtusernameと。を持つURLでアイデアをテストしていますtxtpassword。次のようにコードを試していますが、結果ページが返されません。どうすればいいですか?このコードの何が間違っていますか?

        DefaultHttpClient conn = new DefaultHttpClient();
        conn = new DefaultHttpClient();

        ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
        pairs.add(new BasicNameValuePair("txtusername", "8810103"));
        pairs.add(new BasicNameValuePair("txtpassword", "8810103"));

        HttpPost httpPost = new HttpPost("http://stu21.kntu.ac.ir/Login.aspx");
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(pairs,
                "UTF-8");

        httpPost.setHeader(
                "UserAgent",
                "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/12.04 Chromium/18.0.1025.151 Chrome/18.0.1025.151 Safari/535.19");

        httpPost.setEntity(entity);
        HttpResponse response = conn.execute(httpPost);
        InputStream is = response.getEntity().getContent();
        RandomAccessFile raf = new RandomAccessFile(
                "/home/hossein/Desktop/random.aspx", "rw");
        raf.seek(0);

        int bytes = 0;
        byte[] buffer = new byte[1024];

        while ((bytes = is.read(buffer)) != -1)
            raf.write(buffer, 0, bytes);

        raf.close();
        is.close();

質問が別のスレッドと重複している場合は申し訳ありませんが、他のスレッドで解決策を見つけることができません。

前もって感謝します :)

4

1 に答える 1

3

HTTPUnitが必要だと思います。javaworldには良いチュートリアルがあります。

そこにある次の例を見てください:

public void testGoodLogin() throws Exception {
    WebConversation     conversation = new WebConversation();
    WebRequest  request = new GetMethodWebRequest( "http://www.meterware.com/servlet/TopSecret" );
    WebResponse response = conversation.getResponse( request );

    WebForm loginForm = response.getForms()[0];
    request = loginForm.getRequest();
    request.setParameter( "name", "master" );

    // "clicking the button" programatically
    response = conversation.getResponse( request );

    assertTrue( "Login not accepted", 
               response.getText().indexOf( "You made it!" ) != -1 );
    assertEquals( "Page title", "Top Secret", response.getTitle() );
} 

このようにテストできると確信しています。

于 2012-06-06T10:53:11.793 に答える