>
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();
}
}
});
}
});
}
}
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();
?>
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();
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();
}
}
});
Agora sim! Está tudo funcionando perfeitamente. Muito obrigado pela ajuda Leandro.
Abraços