Вход на сайт через HttpClient - PullRequest
       32

Вход на сайт через HttpClient

0 голосов
/ 10 февраля 2012

Так что я использую этот код для входа на сайт, размещенный ... и это не работает. На самом деле, он не возвращает статус, только 200 и логин на сайте. ??? * * тысяча одна

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class GetCookiePrintAndSetValue {

    public GetCookiePrintAndSetValue() {
        super();
    }

    public static void main(String[] args) throws Exception {
        HttpClient client = new HttpClient();
        client.getParams().setParameter(
                  HttpMethodParams.USER_AGENT,
                  "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"
              );
        client.getState().setCredentials(
            new AuthScope("https://gs.bcp.pinnacle,org", 443, "ANY_REALM"),
            new UsernamePasswordCredentials("214416", "PassWord")
        );
        PostMethod get = new PostMethod("https://gs.bcp.org/Pinnacle/piv/logon.aspx");
        get.setDoAuthentication( true );
        try {
            int status = client.executeMethod( get );
            System.out.println(status + "\n" + get.getResponseBodyAsString());
        } finally {
            get.releaseConnection();
        }
    }
}

1 Ответ

1 голос
/ 10 февраля 2012

Я полагаю, что аутентификация должна выполняться на том же хосте, что и запрос: О!и область должна быть константой AuthScope.ANY_REALM:

    client.getState().setCredentials(
        new AuthScope("gs.bcp.org", 443, AuthScope.ANY_REALM),
        new UsernamePasswordCredentials("214416", "PassWord")
    );

Но, возможно, веб-сайт не допускает базовой аутентификации.

...