Получение ошибки при использовании Android Kou sh Ion для вызова Laravel маршрута - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь освоить android разработку, я использую Android Studio. Мне нужно получить доступ к внешней базе данных (чтобы вставить, получить itens ... CRUD), и я нашел учебник, который говорит мне использовать kou sh ion , с Android, используя Ion, I вызвать веб-страницу, которая является 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 маршрут - это Маршрут: : 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 это Route :: get). Когда я меняю строку «load» на «load (« POST », url)», я получаю сообщение об ошибке.

Я пробовал что-то связанное с CORS, которое я нашел здесь, в StackOverflow и в моем Laravel Ядре. php Я прокомментировал строку, которая вызывает "VerifyCsrfToken", но все еще не работал.

(Наконец, извините, если что-то не так в моем английском sh)

...