2015-10-22 2 views
0

моя проблема в том, что я не получаю, как войти в систему с Java и Apache HttpComponents (HttpClient v4.5.1) на определенный сайт: Site im trying to log in. У меня есть имя пользователя (test_admin) и пароль (тестирование) для входа в систему, но я думаю, что этого недостаточно, и мне нужно что-то еще. Я думаю, что это имеет какое-то отношение к полю security_token, который я вижу, когда я делаю запрос на получение uri, но я не знаю, как сохранить это или как его сохранить и что с ним делать после этого. Также есть скрытое поле ввода с именем login-ticket, но я не знаю, что это такое. Я хочу войти в систему, потому что мне нужно увидеть курсы и добавить новые. После попытки с несколькими реализаций коды им палкой с этим кодом:аутентификация с Java и apache HttpClient 4.5.1

public static void setGet(CloseableHttpClient httpClient) throws UnsupportedOperationException, IOException 
{ 
    HttpGet httpGet = new HttpGet("http://demo.studip.de/dispatch.php/admin/courses"); 
    CloseableHttpResponse httpResponse = httpClient.execute(httpGet); 

    System.out.println("GET Response Status:: " 
      + httpResponse.getStatusLine().getStatusCode()); 

    showEntity(httpResponse,httpResponse.getEntity()); 

} 


public static HttpEntity setParam(int count, String[] params, String[] values) 
{ 
    List<NameValuePair> formparams = new ArrayList<NameValuePair>(); 

    for (int i = 0; i < count; i++) 
    { 
     formparams.add(new BasicNameValuePair(params[i],values[i])); 
     System.out.println("Paramater------------------> "+params[i]+" Values-------------> "+values[i]); 
    } 
    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, Consts.UTF_8); 
    return entity; 

} 

public static void setPost(HttpClient httpC) throws ClientProtocolException, IOException 
{ 
    HttpPost httppost = new HttpPost("http://demo.studip.de/dispatch.php/admin/courses"); 

    //String[] params = {"loginname", "password"}; 
    //String[] values = {"test_admin", "testing"}; 
    //HttpEntity entity = setParam(2, params, values); 

    HttpResponse response = httpC.execute(httppost); 
    System.out.println("POST Response Status:: " 
      + response.getStatusLine().getStatusCode()); 
    showEntity(response, response.getEntity()); 

} 


public static void showEntity(HttpResponse httpResp, HttpEntity httpClient) throws IOException 
{ 

     httpClient = httpResp.getEntity(); 
     if (httpClient != null) 
      httpClient = new BufferedHttpEntity(httpClient); 

     System.out.print(EntityUtils.toString(httpClient)); 
} 




public static void main(String[] args) throws InterruptedException, IOException { 

    CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); 
    credentialsProvider.setCredentials(AuthScope.ANY, 
      new UsernamePasswordCredentials("test_admin", "testing")); 
    CloseableHttpClient hc = 
    HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).build(); 

    setGet(hc); 
    // HttpClient httpclient = HttpClients.createDefault(); 
    setPost(hc); 
    setGet(hc); 

    } 

Проблема теперь истите, что я получаю каждый раз один и тот же ответ от сервера я только увидеть страницу входа в ответ, когда сервер просит меня войти с именем пользователя и паролем.

+0

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

+0

Какую аутентификацию использует страница? Если он использует проверку подлинности формы, тогда вам нужно будет предоставить ответ, который задает имя пользователя/пароль в соответствии с ответом, который ищет форма. Моей рекомендацией было бы получить отладочный веб-прокси и отслеживать запросы и ответы, которые делает ваш браузер при входе в сайт в интерактивном режиме. Это, вероятно, поток, который вам нужно будет подражать вашему коду. – user3745362

ответ

0

Какой код вы получаете с сервера 401,403,301,302 или 200?

+0

3 раза я получаю 200 – crux90

+0

Можете ли вы попробовать получить прямо из браузера? Вам должно быть предложено базовое окно проверки подлинности по умолчанию и попробовать, можете ли вы войти в систему таким образом, чтобы убедиться, что проблема находится в вашем коде, а не в сервисе или в самом URL-адресе? –

+0

да, это не проблема, я могу войти в браузер. Мне жаль, но поскольку это не работает с моим кодом, я спрашиваю: P. – crux90

Смежные вопросы