0
Good afternoon guys, I’ve been having a question for a long time but I’m just trying to get it out now. I have an app that communicates with an online database remotely through a PHP Web Service. I have no problems if the data I need to return from my database comes in String form. For example:
I want to authenticate a user in the Android app, send user and password to the php page. The page in turn queries the user in the database and then returns a string saying user found or user not found.
My question is the following, as I would return for example, all users of database table for android?
Class method I get response from server request remotely:
    /** O cliente HTTP usado para executar requisicoes HTTP. */
    private HttpURLConnection urlConnection = null;
    /** Tempo de espera em milisegundos. */
    /** Resposta da requisicao com servidor remoto HTTP. */
    private String resposta = "";
    /** BufferedReader para o fluxo de entrada da URLConnection. Necessario para poder usar o metodo readLine(). */
    BufferedReader reader = null;
    /** Fluxo de saida para escrever dados na URLConnection. */
    OutputStream outputStream = null;        
/**
     * Faz uma requisicao com um servidor remoto HTTP atraves do metodo POST. Envia uma lista de parametros e obtem uma resposta.
     * @param url O cliente HTTP. A URL a ser feita a conexao. O endereco.
     * @param parametros A lista de parametros a serem enviados para o cliente HTTP.
     * @return A resposta do cliente HTTP.
     * @throws Exception Se houver erro em alguma etapa da requisicao
     */
    public String getHttpPost( String url, List<NameValuePair> parametros ) throws Exception {
        try {
            // Referencia do webservice.
            URI uri = new URI( url );
            // Retorna uma nova conexao para o recurso referenciado na URL.
            urlConnection = (HttpURLConnection) uri.toURL().openConnection();
            // URLConnection permite a entrada de dados. Ele nao pode ser definido depois que a conexao e estabelecida.
            urlConnection.setDoInput( true );
            // URLConnection permite a saida de dados. Ele nao pode ser definido depois que a conexao e estabelecida.
            urlConnection.setDoOutput( true );
            // Define o comando de requisicao que sera enviado ao servidor HTTP remoto - Informacao do webservice. Este metodo so pode ser chamado antes da conexao ser feita.
            urlConnection.setRequestMethod( "POST" );
            // Obtem o fluxo de saida (Objeto OutputStream) para gravar dados na URLConnection.
            // O fluxo e um arquivo, uma pagina da web, ou uma tela, nao importa. Tudo o que importa e que voce recebe as informacoes do fluxo ou envia informacoes para esse fluxo.
            outputStream = urlConnection.getOutputStream();
            // Escreve os dados no fluxo
            outputStream.write( formataParametros( parametros ).getBytes() );
            // Fecha o fluxo de saida
            outputStream.close();
            // Verifica se a resposta esta ok antes de solicitar os dados.
            if( urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK ) {
                // Obtem o fluxo de entrada (Objeto InputStream) para leitura de dados na URLConnection.
                InputStream inputStream = new BufferedInputStream( urlConnection.getInputStream() );
                // Constroi um novo InputStreamReader no InputStream dentro dos paranteses decodificando os dados.
                reader = new BufferedReader( new InputStreamReader( inputStream, "UTF-8" ) );
                StringBuilder builder = new StringBuilder();
                // Aramzena os dados de leitura do fluxo de entrada.
                String line = null;
                // Enquanto houver dados a ler, armazenar em builder.
                while( ( line = reader.readLine() ) != null ) {
                    builder.append(line).append("\n");
                }
                // Armazena os dados recebidos da requisacao na resposta.
                resposta = builder.toString();
            }
            else{
                // Exibe no LogCat mensagem de resposta retornada pelo servidor HTTP remoto.
                Log.i("WebService", "ResponseCode: " + urlConnection.getResponseMessage());
            }
            return resposta;
        }
        finally {
            if( ( outputStream != null ) || ( reader != null )) {
                try {
                    // Fecha o fluxo de saida.
                    outputStream.close();
                    // Fecha o fluxo de entrada.
                    reader.close();
                }
                catch( IOException ioE ) {
                    Log.e("WebService", "Erro.: ", ioE);
                }
            }
        } // Fim do finally
    }
As you can see in the above method, the return type is String. I want to return all records from my database table and not just a String.
And this is the php file, in this example I want to query all users in the database and return the query to Android. I only know how to return values in String form. How could I return all rows of the table with their respective values?
<?php
        // Inclui o arquivo para conexão com o banco de dados.
        include( "conecta_database.php" );
        // Tabela do usuario que irei consultar.
        $tableUser      = "usuario";
        // Obtem os valores enviados através do método POST pelo app android. Nesse caso não usarei isso.
        $email          = urldecode($_POST['email']);
        $password       = urldecode($_POST['password']);
        // Procura por todos os usuário no banco de dados.
        $queryUser  = "SELECT * FROM `$tableUser`";
        // Executa a consulta e retorna um cursor para a variável $result".
        $result     = mysql_query( $queryUser, $connection );
        if (!$result) {
            die("Consulta invalida: " . mysql_error());
        } else {
            // Se tem registros..
            if (mysql_num_rows( $result ) > 0) {
                $row = mysql_fetch_array($result);
                // Como retorno todos os usuários da consulta e seus respectivos dados?
            } else {
                return "String já sei retornar, quero retornar linhas de um banco de dados! :)"
            }
        }
    ?>
						
Could you help me step by step? For example, how to convert table data into an object array in PHP. @Abraão.
– Lucas Santos
Thanks for the help @Abraham, I will test and come back to give a return.
– Lucas Santos
I was able to solve my problem with JSON and GSON, I studied them a little more and I was able to solve them. I didn’t know them and I found them very good. Thank you. @Abraham.
– Lucas Santos
For nothing. I passed the steps just for you to delve into each one.
– Skywalker