我正在启动一个登录和用户注册的android项目。当我编译时,得到这个错误。有人能帮我吗?
错误:无法将类型为java.lang.String的org.json.JSONException值
值已成功上载到本地主机,但错误仍然存在。我认为类代码中的函数Cadastro()一定有一些错误。
类:
public class CadastroActivity extends AppCompatActivity {
private EditText nome, email, senha, c_senha;
private Button btn_cadastrar;
private ProgressBar loading;
private static String URL_REGISTRO =
"http://192.168.0.17/gbprata/registro.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cadastro);
getSupportActionBar().hide();
loading = findViewById(R.id.loading);
nome = findViewById(R.id.edit_Nome);
email = findViewById(R.id.edit_EmailCadastro);
senha = findViewById(R.id.edit_SenhaCadastro);
c_senha = findViewById(R.id.edit_RepeteSenha);
btn_cadastrar = findViewById(R.id.button_cadastrarse);
btn_cadastrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Cadastro();
}
});
}
private void Cadastro(){
loading.setVisibility(View.VISIBLE);
btn_cadastrar.setVisibility(View.GONE);
final String nome = this.nome.getText().toString().trim();
final String email = this.email.getText().toString().trim();
final String senha = this.senha.getText().toString().trim();
final String c_senha = this.c_senha.getText().toString().trim();
StringRequest StringRequest = new StringRequest(Request.Method.POST, URL_REGISTRO,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
String success = jsonObject.getString("success");
if (success.equals("1")){
Toast.makeText(CadastroActivity.this, "Registrado com sucesso!", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(CadastroActivity.this, "Erro ao registrar! "+e.toString(), Toast.LENGTH_SHORT).show();
loading.setVisibility(View.GONE);
btn_cadastrar.setVisibility(View.VISIBLE);
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(CadastroActivity.this, "Erro ao registrar! "+error.toString(), Toast.LENGTH_SHORT).show();
loading.setVisibility(View.GONE);
btn_cadastrar.setVisibility(View.VISIBLE);
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put("nome", nome);
params.put("email", email);
params.put("senha", senha);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(StringRequest);
}
}
PHP文件
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$nome = $_POST['nome'];
$email = $_POST['email'];
$senha = $_POST['senha'];
$senha = password_hash($senha, PASSWORD_DEFAULT);
require_once 'conexao.php';
$sql = "
INSERT INTO tb_alunos (nome, email, senha) VALUES ('$nome', '$email', '$senha');
";
if (mysqli_query($conn, $sql)) {
$result["success"] = "1";
$result["menssage"] = "success";
echo_json_encode($result);
mysqli_close($conn);
} else {
$result["success"] = "0";
$result["menssage"] = "error";
echo_json_encode($result);
mysqli_close($conn);
}
}
?>
发布于 2019-04-16 09:13:29
您很可能得到了损坏的PHP代码,代码行
echo_json_encode($result);
应该是这样的:
echo json_encode($result);
发布于 2019-04-16 08:28:40
在这里,您将直接为json字符串"success“赋值。
String success = jsonObject.getString("success");
将其替换为以下代码
String success = jsonObject.getString("success").toString();
试试看..希望它对你有用。
https://stackoverflow.com/questions/55697825
复制相似问题