我正在尝试学习android开发,我正在使用Android Studio。我需要访问一个外部数据库(插入,获取 itens ... CRUD),并且我找到了一个教程,告诉我使用koush ion,从使用 Ion 的 Android 开始,我将一个网页称为Laravel 7 Route。当我不带参数调用时,它工作得很好,我可以在 Android 中获取返回值。但是当我使用“setBodyParameter”时,出现以下错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.gson.JsonElement com.google.gson.JsonObject.get(java.lang.String)' on a null object reference
我的 laravel 路由只调用了这个函数:
function cadastrar(){
date_default_timezone_set('America/Sao_Paulo');
$resposta = array();
$myUser = null;
$nome = isset($_POST['nome']) ? $_POST['nome'] : 'Teste 2';
$email = isset($_POST['email']) ? $_POST['email'] : 'teste@gmail.com';
$myUser = new Usuario;
$myUser->nome = $nome;
$myUser->email = $email;
$myUser->save();
$resposta = array('id' => strval($myUser->id_usuario), 'nome' => $myUser->nome, 'email' => $myUser->email);
return json_encode($resposta);
}
我的 Laravel 路线是 Route::get (但是当我将其更改为 Route::post 时,我也会收到错误消息)。
我调用此页面的 Android 代码是:
final TextView txtErro = (TextView) findViewById(R.id.textView4);
txtErro.setText("");
final String strNome = nome.getText().toString();
final String strEmail = email.getText().toString();
String url = "**My URL to the route in laravel**";
Ion.with(MainActivity.this)
.load(url)
.setBodyParameter("nome", strNome)
.setBodyParameter("email", strEmail)
.asJsonObject()
.setCallback(new FutureCallback<JsonObject>() {
@Override
public void onCompleted(Exception e, JsonObject result) {
try {
txtErro.setText(result.get("id").getAsString());
} catch (Exception erro) {
txtErro.setText(erro.toString());
}
}
});
当我注释“.setBodyParameter”的两行时,我从 laravel 获取返回值(如果 laravel 路由是 Route::get)。当我将 "load" 行更改为 "load("POST", url)" 时,出现错误。
我尝试了一些与我在 StackOverflow和我的 Laravel Kernel.php 中找到的 CORS 相关的东西,我评论了调用“VerifyCsrfToken”的行,但仍然没有工作。
(最后,如果我的英语有问题,我很抱歉)