HTTPCLIENT: аутентификация для протокола https на странице asp - PullRequest
0 голосов
/ 22 февраля 2011

Мне нужен доступ к странице asp, запущенной по протоколу https.У меня проблемы с аутентификацией.Объект ответа возвращает «HTTP / 1.1 200 OK», но меня перенаправляют на саму страницу входа в систему.

Ниже приведен мой код:

public FileDownloadHttpWrapper(String url,String username, String password)
{
    SchemeRegistry supportedSchemes = new SchemeRegistry();
    supportedSchemes.register(new Scheme("https", 
    SSLSocketFactory.getSocketFactory(), 443));

    // prepare parameters
    HttpParams params = new BasicHttpParams();
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, "UTF-8");
    HttpProtocolParams.setUseExpectContinue(params, true);

    ClientConnectionManager ccm = new ThreadSafeClientConnManager(params,supportedSchemes);
    mClient = new DefaultHttpClient(ccm,params);            
    mClient.getCredentialsProvider().setCredentials(
        new AuthScope(null,AuthScope.ANY_PORT),
        new UsernamePasswordCredentials(username, password)
        );
}

private Object getRequest(String url)
{
    HttpGet get = new HttpGet("/EvalMuniMKT/mainmenu.asp");
    HttpHost target = new HttpHost(url, 443, "https");

    try
    {
        // execute the GET
        HttpResponse resp = mClient.execute(target,get);

        HttpEntity entity = resp.getEntity();

        System.out.println(resp.getStatusLine());            
        System.out.println(EntityUtils.toString(entity));   
    } 
    catch(Exception ex)
    {
        ex.printStackTrace();
    }
    finally
    {
        // release any connection resources used by the method    
    }

    return null;
}

1 Ответ

0 голосов
/ 02 марта 2011

Я думаю, что сайт asp использует основанный на форме логин (сеанс), а не базовая аутентификация http . Для этого вам может потребоваться выполнить регистрацию в форме сообщения и сохранить cookie в контексте и передать контекст во время выполнения фактического запроса.

что-то вроде:

        CookieStore cookieStore = new BasicCookieStore();
    // Create local HTTP context
    HttpContext localContext = new BasicHttpContext();
    // Bind custom cookie store to the local context
    localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
          hc.execute(httpget, localContext);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...