0

次のように HttpClient を使用して実用的にサイトにログインしようとしています:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class HttpClientWebAPITest {
  public static void main(String[] args) {
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("http://localhost:8080/login.jsp");

    try {

      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
      nameValuePairs.add(new BasicNameValuePair("j_username", "mayank"));
      nameValuePairs.add(new BasicNameValuePair("j_password", "hexgen"));

      post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
      HttpResponse response = client.execute(post);
      BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

      String line = "";
      while ((line = rd.readLine()) != null) {
        System.out.println(line);
        if (line.startsWith("Auth=")) {
          String key = line.substring(5);
          System.out.println("key : hexgen : "+key);
          // Do something with the key
        }

      } 
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
} 

これはログインページを印刷するだけですが、システムにログインしてJSESSIONIDを設定したい

認証が正しく行われたかどうかを確認したい。

これを解決するのを手伝ってください。

宜しくお願いします アント

4

1 に答える 1

0

ログインするには、おそらく資格情報を別の URL に投稿する必要があります。http://localhost:8080/login.jspはログイン ページのアドレスです。formその jsp ファイルactionで、ログイン アクションのアドレスを持つ属性を持つ を探します。何かのようなもの:

<form action="j_spring_security_check" method="post">

次に、その URL にリクエストを送信します ( http://localhost:8080/j_spring_security_check)。

于 2013-04-12T06:35:42.753 に答える