【问题标题】:Getting error when use Android Koush Ion to call Laravel route使用 Android Koush Ion 调用 Laravel 路由时出错
【发布时间】:2020-04-26 15:14:06
【问题描述】:

我正在尝试学习 android 开发,我正在使用 Android Studio。我需要访问一个外部数据库(插入,获取 itens ... CRUD),我找到了一个教程,告诉我使用 koush ion,从 Android 使用 Ion,我调用一个网页是 Laravel 7路线。当我不带参数调用时,效果很好,我可以在 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)”时,出现错误。

我尝试了一些与 CORS 相关的东西,我发现 here in StackOverflow 并在我的 Laravel Kernel.php 中评论了调用“VerifyCsrfToken”的行,但仍然没有工作。

(最后,如果我的英语有问题,我很抱歉)

【问题讨论】:

    标签: android laravel android-studio laravel-7 ion-koush


    【解决方案1】:

    您是否尝试记录异常 e 和 JsonObject 结果? 或为请求设置日志记录并在 logcat 中观察它

    .setLogging("MyLogs", Log.DEBUG)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多