Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

manoelps

Post request com Retrofit + Android

Recommended Posts

Olá pessoal, estou estudando android, e estou tentando usar a biblioteca retrofit com android. Após ler a documentação consegui fazer envio de dados de um formulario via POST para uma página escrita em php, e receber o retorno (em formato JSON), porém não consigo receber todos os dados, recebo só o primeiro, e eu gostaria de receber toda a lista de usuários que eu colocar na pagina, segue meu codigo abaixo:

Dependências:

    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'

MainActivity (dentro de um botão):

Retrofit retrofit = new Retrofit.Builder()
                        .baseUrl("http://192.168.101.36/json/")
                        .addConverterFactory(GsonConverterFactory.create())
                        .build();

                ApiService apiService = retrofit.create(ApiService.class);

                Call<User> call = apiService.validateUser(inputEmail.getText().toString(), inputSenha.getText().toString());
                call.enqueue(new Callback<User>() {
                    @Override
                    public void onResponse(Call<User> call, Response<User> response) {
                        //Verifica se houve a conexão com sucesso ao webservice
                        if (!response.isSuccessful()) {
                            textView.setText("ERROR onResponde: " + response.code());
                        } else {
                            //requisição retona os dados com sucesso
                            String email = response.body().getEmail();
                            String senha = response.body().getPassword();
                            textView.append("email: " + email + " - senha: " + senha + "\n");
                        }
                    }

                    @Override
                    public void onFailure(Call<User> call, Throwable t) {
                        t.printStackTrace();
                        textView.setText(t.getMessage());
                    }

                });

Interface:

public interface ApiService {
    @FormUrlEncoded
    @POST("index.php") 
    Call<User> validateUser(
            @Field("username") String username,
            @Field("password") String password
    );
}

Classe User:

public class User {
    private int id;
    private String error, error_msg, username, email, password;

    public String getError(){
        return this.error;
    }

    public String getError_msg(){
        return this.error_msg;
    }

    public int getId(){
        return this.id;
    }

    public String getUsername(){
        return this.username;
    }

    public String getPassword(){
        return this.password;
    }

    public String getEmail(){
        return this.email;
    }
}

Index.php

$email = $_POST['username'];
$senha = $_POST['password'];

echo '
    {
      "email":"'.$email.'",
      "password":"'.$senha.'"
    },
    {
      "email":"'.$email.'",
      "password":"'.$senha.'"
    },
    {
      "email":"joselito@joselito.com",
      "password":"123456"
    }
';

Att.

Manoel Pereira dos Santos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido!

[ANTES]:

@FormUrlEncoded
@POST("index.php") 
Call<User> validateUser(
@Field("username") String username,
@Field("password") String password
);

[DEPOIS]:

@FormUrlEncoded
@POST("index.php") 
Call<List<User>> validateUser(
@Field("username") String username,
@Field("password") String password
);

Então no callback response.body() irá dar-lhe uma lista de objetos Usuário, depois só interagir com a lista.

Link da solução completa: http://stackoverflow.com/questions/39724751/how-get-list-of-objects-with-post-request-to-retrofit-2-1-0-with-android/39725105#39725105

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Estou escrevendo um Sistema Java Web e quando clico no Botão Salvar, o Java acusa esse erro:

      ERROR: Cannot invoke "Object.toString()" because the return value of "java.util.Map.get(Object)" is null
       
      Já tentei de várias formas resolver esse problema, mas não estou conseguindo.

      Por favor, alguém pode me ajudar identificar a origem e resolver o problema acima ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Estou enfrentando um problema que não consigo entender.

      Após Instalar o MySql versão 8.0.36, funciona corretamente realizando as conexões.

      O problema é:
      ---[ após reiniciar o micro, o MySql não faz as conexões.
      --[ tenta localizar este arquivo, mas não acha: my.ini
       
      Onde localizo ou configuro este arquivo na Pasta MySql ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, preciso de ajuda em Relação a Instalar o Jasper Reports no Eclipse, pois a opção de Eclipse Marketplace, não encontra para instalar.
       
      Já tentei de todas as formas mas não consegui, alguém conhece alguma rotina explicando este procedimento ?
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amantes da informática.
       
      Saudações.
       
      Estou usando o Eclipse Mars versão 4.5.0  e o 4.5.2, acredito que deva ter versões mais novas. 
      Sou novato em JAVA e estou encontrando alguns problema em Instalação de alguns plugins, como por exemplo:
       
      1) quando tento instalar o JBoss Tools através do Eclipse Marteplace, o Eclipse não o encontra na lista de plugins.
      2) se tento instalar através do Install New Software, abaixa alguns arquivos, mas também não instala o JBoss.
      3) se abro o site e arrasto o download para a área de trabalho do Eclipse, também não instala o JBoss.
       
      Caros amigos, existe outra alguma forma de instalar o JBoss Tools no Eclipse e como seria ?
       
      Grato,
       
      Cesar
       
       
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.