Мое приложение пытается создать новую строку на сервере. Ошибка, которую я получаю, – это исключение Null Point в jObj = new JSONObject(json);
Это файл php, который создает новую строку:
<?php $response = array(); if (isset($_POST['user']) && isset($_POST['pass']) & isset($_POST['mail'])&& isset($_POST['num'])) { $user = $_POST['user']; $pass = $_POST['pass']; $mail = $_POST['mail']; $num = $_POST['num']; require_once __DIR__ . '/db_connect2.php'; $db = new DB_CONNECT(); $result = $db->query("INSERT INTO users(Name, Password, Email,ConfirmNum) VALUES('$user', '$pass', '$mail', '$num')"); if ($result) { $response["success"] = 1; $response["message"] = "user successfully created."; echo json_encode($response); } else { $response["success"] = 0; $response["message"] = "Oops! An error occurred."; echo json_encode($response); } } else { $response["success"] = 0; $response["message"] = "missing fields"; echo json_encode($response); } ?>
Парсер, запрашивающий обновление,:
package com.example.denis.onthego; import android.content.ContentValues; import android.util.Log; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class JSONParser { static JSONObject jObj; static String json; // constructor public JSONParser() { } // function get json from url // by making HTTP POST or GET mehtod public static JSONObject makeHttpRequest(String url, String method, ContentValues params) { // Making HTTP request try { final OkHttpClient client = new OkHttpClient(); Request request; // check for request method if (method.equals("POST")) { // request method is POST MediaType contentType = MediaType.parse("application/x-www-form-urlencoded; charset=UTF-8"); String content = ""; for (String key : params.keySet()) { if ( !content.isEmpty()) content += "&"; content += key + "=" + params.get(key); } RequestBody body = RequestBody.create(contentType, content); request = new Request.Builder().url(url).post(body).build(); } else { // request method is GET request = new Request.Builder().url(url).build(); } final Response response = client.newCall(request).execute(); json = response.body().string(); } catch (IOException e) { e.printStackTrace(); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e ){ Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON String return jObj; } }
И призыв к синтаксическому анализатору:
JSONObject json = jsonParser.makeHttpRequest(url_create_product,"POST", params);
Хотя «add_user» предназначен для php-файла, который создает новую строку (это правильный URL-адрес), а «params» не являются пустыми и содержат правильные ключи и содержимое. Что-то не так с парсером или файлом php? Это очень серьезный школьный проект, и это единственное, чего мне не хватает.
Вот параметры:
params.put("user", "swane15"); params.put("pass", "asdeg124A"); params.put("mail", "asf@asd.com"); params.put("num", "111111");
Почему файл php ничего не возвращает? Это связано с тем, что приложение не может связаться с ним или есть ошибка с самим файлом php?