1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Autenticação HttpClient

Boa tarde pessoal, estou tentando autenticar em um gitlab local utilizando o HttpClient, porém nenhum erro é disparado. Apenas sou redirecionado para a tela de login. Segue abaixo meu código:

Java:

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.ClientPNames;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class SimpleFormAuth {

    public void doAuthentication(){

          String host = "localhost";
          int port = 8083;
          String protocol = "http";

          DefaultHttpClient client = new DefaultHttpClient();

          try {
              //GET para pegar os cookies ta tela de login
              HttpHost httpHost = new HttpHost(host, port, protocol);
              client.getParams().setParameter(ClientPNames.DEFAULT_HOST, httpHost);

              HttpGet securedResource = new HttpGet("/");           
              HttpResponse httpResponse = client.execute(securedResource);
              HttpEntity responseEntity = httpResponse.getEntity();
              String strResponse = EntityUtils.toString(responseEntity);
              int statusCode = httpResponse.getStatusLine().getStatusCode();
              EntityUtils.consume(responseEntity);


              //POST de autenticação
              HttpPost authpost = new HttpPost("/users/sign_in");
              authpost.addHeader("User-Agent",
                      "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:34.0) Gecko/20100101 Firefox/34.0");
              authpost.addHeader("Accept",
                      "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
              authpost.addHeader("Accept-Language", "pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3");
              authpost.addHeader("Accept-Encoding", "gzip, deflate");
              authpost.addHeader("Referer", "http://localhost:8083/users/sign_in");
              authpost.addHeader("Connection", "keep-alive");

              List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
              nameValuePairs.add(new BasicNameValuePair("utf8", "&#x2713;"));
              nameValuePairs.add(new BasicNameValuePair("authenticity_token", "token_capturado_do_get"));
              nameValuePairs.add(new BasicNameValuePair("user_login", "login_de_teste"));
              nameValuePairs.add(new BasicNameValuePair("user_password", "senha_de_teste"));
              nameValuePairs.add(new BasicNameValuePair("user_remember_me", "0"));
              authpost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));

              httpResponse = client.execute(authpost);
              responseEntity = httpResponse.getEntity();
              strResponse = EntityUtils.toString(responseEntity);
              statusCode = httpResponse.getStatusLine().getStatusCode();
              EntityUtils.consume(responseEntity);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

FORM:

<form accept-charset="UTF-8" action="/users/sign_in" class="new_user" id="new_user" method="post"><div style="display:none"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="9BHyiC9DRrI0EHCeamiW0zQC4qi+eTr6KmsONEMf3PQ=" /></div><input autofocus="autofocus" class="form-control top" id="user_login" name="user[login]" placeholder="Username or Email" type="text" />
<input class="form-control bottom" id="user_password" name="user[password]" placeholder="Password" type="password" />
<div class='clearfix append-bottom-10'>
<label class='checkbox remember_me' for='user_remember_me'>
<input name="user[remember_me]" type="hidden" value="0" /><input id="user_remember_me" name="user[remember_me]" type="checkbox" value="1" />
<span>Remember me</span>
</label>
</div>
<div>
<input class="btn-save btn" name="commit" type="submit" value="Sign in" />
<div class='pull-right'>
<a class="btn" href="/users/password/new">Forgot your password?</a>
</div>
</div>
</form>
  • Só uma curiosidade Seu código -> "HttpGet securedResource = new HttpGet("/");". Tá certo isso? Você não teria que colocar o caminho da onde você está tentando acessar?

    Guerino Rodella   22 de dez de 2014
  • A página inicial está na raiz mesmo, no "/", o post de autenticação faço no "/users/sign_in"

    LeoCBS   23 de dez de 2014
  • vc esta tentando consumir um webservice ?

    fernandopaiva   23 de dez de 2014
  • Não é um webservice, é uma página normal html com um form. Estou tentando dar o mesmo POST no form que a página executa, porem no java.

    LeoCBS   23 de dez de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java get post ou faça a sua própria pergunta.