Boa tarde pessoal, estou precisando de uma luz.
Tenho um app simples que fiz pra uma necessidade de um cliente, ele basicamente tem um form onde você digita um codigo, ele envia isso a um arquivo php externo que retorna em Json se existe ou não esse codigo na base de dados.
O que acontece é que sempre funcionou normalmente, até começar a dar esse erro que ja postei aqui
Desconfio que o erro era provocado por que o php demorava de retornar ao app provocando a queda do sistema, então resolvi editar esse Json para fazer a busca em um banco de dados mySql e fazer o mesmo retorno ao app.
Na teoria tudo funciona as mil maravilhas, teste de várias formas usando php e o Json retorna perfeito, porém quando faço a busca pelo app, o aplicativo retorna somente a primeira linha da tabela.
testes ja realizados.
Para vocês entenderem melhor o erro eu cirei essa página para testar o retorno do Json
http://portal.aquaload.com.br/teste.php
o retorno é perfeito como vocês podem testar com os codigos AL00001 ou AL03041.
Pelo app, usando o antigo código que está no post mencionado acida, ele retorna normal, porem quando adequei a sql ele só retorna a primeira linha da tabela.
Segue o codigo do app
package br.com.aquaload.aqualoaditc;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.gson.JsonObject;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import com.koushikdutta.async.future.FutureCallback;
import com.koushikdutta.ion.Ion;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
public class qr_code extends AppCompatActivity {
Button btnScan;
Button btnBuscar;
EditText txtLeitor;
String HOST = "http://portal.aquaload.com.br/buscador_app.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qr_code);
//deixa o app fixo na vertical
this.setRequestedOrientation(SCREEN_ORIENTATION_PORTRAIT);
//retira a barra de título
getSupportActionBar().hide(); //aqui a mágica
txtLeitor = (EditText) findViewById(R.id.txtLeitor);
btnScan = (Button) findViewById(R.id.btnScan);
btnBuscar = (Button) findViewById(R.id.btnBuscar);
final Activity activity = this;
btnBuscar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String arquivo = txtLeitor.getText().toString();
String URL = HOST;
if(arquivo.isEmpty()){
Toast.makeText(qr_code.this,"Preencha o campo",Toast.LENGTH_LONG).show();
}else{
Ion.with(qr_code.this)
.load(URL)
.setBodyParameter("arquivo_app", arquivo)
.asJsonObject()
.setCallback(new FutureCallback<JsonObject>() {
@Override
public void onCompleted(Exception e, final JsonObject result) {
try{
//Toast.makeText(qr_code.this,"Arquivo: " + result.get("ARQUIVO").getAsString(), Toast.LENGTH_LONG).show();
final String RETORNO = result.get("ARQUIVO").getAsString();
if (RETORNO.equals("ARQUIVO_NAO_EXISTE")) {
Toast.makeText(qr_code.this, "O arquivo não existe em nossa base de dados", Toast.LENGTH_LONG).show();
}else {
AlertDialog.Builder msgBox = new AlertDialog.Builder(qr_code.this);
msgBox.setTitle("Arquivo Encontrado");
//msgBox.setIcon();
msgBox.setMessage("Confirmar o download do arquivo? " + RETORNO);
msgBox.setPositiveButton("Baixar agora", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//vai pro link
String url_destino = "http://portal.aquaload.com.br/";
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url_destino + RETORNO));
startActivity(browserIntent);
//Toast.makeText(qr_code.this,"Arquivo: " + RETORNO, Toast.LENGTH_LONG).show();
}
});
msgBox.setNegativeButton("Voltar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
msgBox.show();
}
}catch (Exception erro){
AlertDialog.Builder msgBox = new AlertDialog.Builder(qr_code.this);
msgBox.setTitle("ERRO");
//msgBox.setIcon();
msgBox.setMessage("Aconteceu um erro "+erro);
msgBox.setNegativeButton("Voltar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
msgBox.show();
//toast
//Toast.makeText(qr_code.this,"Sem conexão com o banco de dados, verifique sua internet "+erro,Toast.LENGTH_LONG).show();
}
}
});
}
}
});
btnScan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
IntentIntegrator integrator = new IntentIntegrator(activity);
integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
integrator.setPrompt("Camera Escaniando");
integrator.setCameraId(0);
integrator.initiateScan();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode,resultCode,data);
if(result != null){
if(result.getContents() != null){
//pesquisa
String arquivo = result.getContents();
String URL = HOST;
if(arquivo.isEmpty()){
Toast.makeText(qr_code.this,"Erro de leitura, tente novamente",Toast.LENGTH_LONG).show();
}else{
Ion.with(qr_code.this)
.load(URL)
.setBodyParameter("arquivo_app", arquivo)
.asJsonObject()
.setCallback(new FutureCallback<JsonObject>() {
@Override
public void onCompleted(Exception e, final JsonObject result) {
try{
//Toast.makeText(qr_code.this,"Arquivo: " + result.get("ARQUIVO").getAsString(), Toast.LENGTH_LONG).show();
final String RETORNO = result.get("ARQUIVO").getAsString();
if (RETORNO.equals("ARQUIVO_NAO_EXISTE")) {
Toast.makeText(qr_code.this, "O arquivo não existe em nossa base de dados", Toast.LENGTH_LONG).show();
}else {
AlertDialog.Builder msgBox = new AlertDialog.Builder(qr_code.this);
msgBox.setTitle("Arquivo Encontrado");
//msgBox.setIcon();
msgBox.setMessage("Confirmar o download do arquivo?");
msgBox.setPositiveButton("Baixar agora", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//vai pro link
String url_destino = "http://portal.aquaload.com.br/";
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url_destino + RETORNO));
startActivity(browserIntent);
//Toast.makeText(qr_code.this,"Arquivo: " + url_destino + RETORNO, Toast.LENGTH_LONG).show();
}
});
msgBox.setNegativeButton("Voltar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
msgBox.show();
}
}catch (Exception erro){
Toast.makeText(qr_code.this,"Sem conexão com o banco de dados, verifique sua internet",Toast.LENGTH_LONG).show();
}
}
});
}
//fim pesquisa
//alerta(result.getContents());
}else{
alerta("Cancelado");
}
}else{
super.onActivityResult(requestCode, resultCode, data);
}
}
private void alerta (String msg){
Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_LONG).show();
}
private void buscar (String msg){
String buscador;
buscador = "Marucio";
}
}
Segue também o codigo do Json buscando em mysql
<?php
$servername = "localhost";
$username = "senha";
$password = "";
$dbname = "portal";
$post = $_POST['busca'];
// Cria a conexao
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
$retornoApp = array("ARQUIVO" => "SEM_CONEXAO");
echo json_encode($retornoApp);
exit();
}
$sql = "Select * from uploads where local_upload LIKE '%$post%'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
$row = $result->fetch_assoc();
$retornoApp = array("ARQUIVO" => "arquivos/".$row["local_upload"]);
echo json_encode($retornoApp);
} else {
$retornoApp = array("ARQUIVO" => "ARQUIVO_NAO_EXISTE");
echo json_encode($retornoApp);
}
$conn->close();
espero que alguem consiga me dar uma luz