3

Apacheのjarファイルを使用してユーザー名またはパスワードをWebサイトに送信し、メソッド「loadpage」を使用してWebサイトからすべてを読み取ろうとしています。

動作しません。メソッド「loadpage」を実行した後。まだメインページからストリームを取得していますが、ログインする必要はありません。ログイン後にストリームを取得したいのですが。

  public static void main(String[] args) throws Exception {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        try {
            httpclient.getCredentialsProvider().setCredentials(
                    new AuthScope("https://justawebsite", 8080),
                    new UsernamePasswordCredentials("username","password"));

            HttpGet httpget = new HttpGet("https://justawebsite");

            System.out.println("executing request" + httpget.getRequestLine());
            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();

            System.out.println("----------------------------------------");
            System.out.println(response.getStatusLine());
            if (entity != null) {
                System.out.println("Response content length: " + entity.getContentLength());
            }
            EntityUtils.consume(entity);
        } finally {
            httpclient.getConnectionManager().shutdown();
        }
    }

Apacheのjarfileを使わずに試してみました。

public  void LogIn(String url1) throws Exception{
        URL url = new URL(url1);

        String userPassword = "username"+":"+"password";
        String encoding = new sun.misc.BASE64Encoder().encode (userPassword.getBytes());
        //con.setRequestProperty("Cookie", "JSESSIONID="+getSid());

        URLConnection con = url.openConnection();
        //con.connect();
        con.setRequestProperty("Cookie", "JSESSIONID=" + encoding);


        con.connect();

    }

私のメソッドロードページ:認証を必要としない他のいくつかのWebサイトで試したため、機能します。

public String loadPage(String url)は例外をスローします{

    URLConnection con = new URL(url).openConnection();
    StringBuilder buffer = new StringBuilder();

    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String line;
    while((line=in.readLine())!= null){
        buffer.append(line);
    }
    in.close();
    return buffer.toString();

}
4

2 に答える 2

2

Web認証の種類はさまざまであるため、Beheが指摘したように、最初にどの認証の種類がWebサイトを使用しているかを確認する必要があります。

最初の例は基本認証を使用していますが、Webサイトはおそらく何らかのフォームベースの認証を期待しています。

最新の場合は、このクライアントHTTPプログラミング入門書を確認する必要があります。

  • Webフォームにユーザー名とパスワードを入力し、「ログイン」ボタンを押します
于 2012-05-08T13:30:29.437 に答える
0

実際、私がしたことは正しかった。運が良ければ解決策を見つけました。理由はわかりませんが、解決策のin.readLine();前に一度書く必要がありました

in.readLine();

while((line=in.readLine()) != null){
buffer.append(line);
}
in.close()

ログインした後にストリームを取得するには

于 2012-05-09T07:58:43.327 に答える