Ява HttpClient 403 запрещено проблема? - PullRequest
1 голос
/ 24 мая 2011

Я использую HttpClient api для аутентификации на веб-сайте:

    DefaultHttpClient httpclient = new DefaultHttpClient();

    httpclient.getCredentialsProvider().setCredentials(
            new AuthScope(AuthScope.ANY_HOST, 443),
            new UsernamePasswordCredentials(args[0], args[1]));

    HttpGet httpget = new HttpGet("http://..........");

    HttpResponse response = httpclient.execute(httpget);

    System.out.println(response.getStatusLine());
    if (entity != null) {
        System.out.println("Response content length: "
                + entity.getContentLength());
    }

У меня есть этот ответ:

HTTP/1.1 403 Forbidden
Response content length: -1 

Но с помощью браузера у меня есть доступ к этой странице с тем же логином и паролем !!!!

Как я могу решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 24 мая 2011

Вы создаете объект AuthScope с параметром порта, установленным на 443 (порт по умолчанию для HTTPS).Однако вы создаете объект HttpGet с URL-адресом, указывающим на HTTP (с портом по умолчанию 80).

Либо попробуйте сконструировать AuthScope, используя:

new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT) 

, либо убедитесь, что порты совпадают.

0 голосов
/ 24 мая 2011

Вам нужно внимательно посмотреть, как браузер на самом деле аутентифицируется.

То, что вы пытаетесь сделать, - это (я думаю) отправить учетные данные, используя базовую аутентификацию HTTP. Если сайт настроен на разрешение только аутентификации на основе форм и файла cookie сеанса, он будет игнорировать заголовок, содержащий учетные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...