>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Criando um App de Chat Aula 5 (Retorno NULO)


Estou fazendo o curso Criando um App de Chat e na hora de fazer o cadastro do usuário (Aula 5 - Cadastro de Perfil - Parte 2) a aplicação fecha, fiz uns alteração e percebi que estar retornando nulo.
Estou parado nessa parte do curso já tem um bom tempo, quem puder me ajudar agradeço.

Código abaixo
CadastroActivity.java


package com.example.felipe.chat;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.gson.JsonObject;
import com.koushikdutta.async.future.FutureCallback;
import com.koushikdutta.ion.Ion;

public class CadastroActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cadastro);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

Button btn = (Button)findViewById(R.id.btnCadastrar);

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText txtNome = (EditText)findViewById(R.id.txtNome);
EditText txtEmail = (EditText)findViewById(R.id.txtEmail);
EditText txtSenha = (EditText)findViewById(R.id.txtSenha);
EditText txtSenha2 = (EditText)findViewById(R.id.txtSenha2);
String URL = "http://192.168.0.4/chat/insert_user.php";
Ion.with(getBaseContext())
.load(URL)
.setBodyParameter("nome_user",txtNome.getText().toString())
.setBodyParameter("email_user",txtEmail.getText().toString())
.setBodyParameter("senha_user",txtSenha.getText().toString())
.asJsonObject()
.setCallback(new FutureCallback() {
@Override
public void onCompleted(Exception e, JsonObject result) {
if(result == null) Toast.makeText(getBaseContext(),e.getMessage() + " - Retorno NULO!",Toast.LENGTH_LONG).show();
else
if(result.get("retorno").getAsString().equals("YES")){
Toast.makeText(getBaseContext(), "Cadastro realizado com sucesso!",Toast.LENGTH_LONG).show();
}

}
});
}
});

}

}



insert_user.php


if (!isset($_POST["nome_user"]))
{
$retorno = array("retorno" => "Erro nome_user Vazio");
echo json_encode($retorno);
exit;
}
$nome_user = $_POST["nome_user"];
$email_user = $_POST["email_user"];
$senha_user = $_POST["senha_user"];

$data = date("Y-m-d H:i:s");

$conn = new mysqli("localhost","root","","chat");
$sql_insert = 'INSERT INTO usuarios (nome_usuario, email_usuario, senha_usuario, data_usuario)';
$sql_insert .= 'VALUES (?, ?, ?, ?)';

$stm = $conn->prepare($sql_insert);
$stm->bind_param("ssss", $nome_user,$email_user, $senha_user, $data);

if($stm->execute())
{
$retorno = array("retorno" => "YES");
}
else
{
$retorno = array("retorno" => "NO");

}
echo json_encode($retorno);
$stm->close();
$conn->close();



?>



4 Respostas




Quando acesso pelo navegador tenho o retorno de nome_user vazio, mais quando faço pela chat result = null




Também estou com o mesmo problema, há dois estou tentando resolver. Alguém pode nos ajudar.

Percebi que a resposta do servidor está vindo com o codigo: HTTP/1.1 405 Method Not Allowed

No aguardo.

Obrigado.




Felipe, consegui a solução, não da forma que está no vídeo na aula 5, mais está rodando. Vou postar logo abaixo.

Aguardo um comentário da equipe de moderação RL System para sobre os códigos abaixo, já que pra mim biblioteca ION é uma coisa nova.

Estou fazendo o curso com java web (servlet), apos a validação no inclusão do registro, esse codigo abaixo é a resposta da servlet.


JSONObject json = new JSONObject();
json.put("retorno", resposta);
PrintWriter printout = response.getWriter();
response.setContentType("application/json; charset=UTF-8");
printout.print(json);
printout.flush();


E no android, ficou desta forma:

Ion.with(getBaseContext())
.load("POST", url)
//.addQuery("action", "dummyAction")
//.addHeader("Content-Type", "application/json")
.setLogging("ION_VERBOSE_LOGGING", Log.VERBOSE)
.setTimeout(20000)
.setBodyParameter("NOME", nome.getText().toString())
.setBodyParameter("EMAIL", mail.getText().toString())
.setBodyParameter("SENHA", senh.getText().toString())
.asString()
.withResponse()
.setCallback(new FutureCallback>() {
@Override
public void onCompleted(Exception e, Response result) {
Log.e("Script", Integer.toString(result.getHeaders().code()));
Log.e("Script", result.getResult());
JsonParser parser = new JsonParser();
JsonObject jsonObject = (JsonObject) parser.parse(result.getResult().toString());
if (jsonObject.get("retorno").getAsString().equals("YES")) {
Toast.makeText(getBaseContext(), "Sucesso!!! " jsonObject.get("retorno").getAsString(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getBaseContext(), "NO Sucesso!!!", Toast.LENGTH_SHORT).show();
}
}
});


Espero que possa ajudar.




Agora sim! Está tudo funcionando perfeitamente. Muito obrigado pela ajuda Leandro.
Abraços