[залп] [JSONException]: значение - PullRequest
1 голос
/ 28 марта 2020

Я занимаюсь разработкой приложения android для университетского проекта. Когда я делаю сообщение JsonObjectRequest, используя залп, застреваю в той же ошибке. Я пытаюсь вставить точку в mysql дБ, используя @Override onMapClick (LatLng latLng).

Ниже я даю вам свой код:

public void addponto(LatLng latLng){
    String url = "http://192.168.64.2/API_CM/myslim/api/addPonto1";

    Map<String, String> jsonParams = new HashMap<>();


    jsonParams.put("lat", String.valueOf(latLng.latitude));
    jsonParams.put("lng", String.valueOf(latLng.longitude));
    jsonParams.put("nome", "teste");
    jsonParams.put("id_user", String.valueOf(userLogado.getId()));

    JSONObject teste = new JSONObject(jsonParams);

    Log.d("latlong is ", "["+latLng+"]");
    Log.d("latlong is lat ", "["+latLng.latitude+"]");
    Log.d("latlong is long ", "["+latLng.longitude+"]");
    Log.d("latlong idUser ", "["+userLogado.getId()+"]");
    Log.d("latlong json 111 ", "["+teste.toString()+"]");

    JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.POST, url,
            new JSONObject(jsonParams),
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try{
                        if (response.getBoolean("status")){
                            Toast.makeText(MapasActivity.this, "ponto add", Toast.LENGTH_LONG).show();
                        }else {
                            Toast.makeText(MapasActivity.this, "ponto nao add", Toast.LENGTH_LONG).show();
                        }
                    }catch (JSONException ex){
                        Log.d("blablabla", ex.toString());
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError volleyError) {
                    Log.d("tagconvertstr1", "["+volleyError.getMessage()+"]");
                }
            })   {

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "application/json; charset=utf-8");
            headers.put("User-agent", System.getProperty("http.agent"));
            return headers;
        }
    };

    MySingleton.getInstance(this).addToRequestQueue(postRequest);
}

PHP api:

$app->post('/api/addPonto1', function () {
    require_once ('db/dbconnect.php');
    try{
        $lat = (double)$_POST['lat'];
        $lng = (double)$_POST['lng'];
        $point = $lat . ' ' . $lng;
        $nome     = $_POST['nome'];
        $id_user  = (int)$_POST['id_user'];
        $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $connection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        $connection->beginTransaction();
        $query = "INSERT INTO pontos(ponto, nome, id_user) VALUES (ST_GeomFromText('POINT(".$point.")'), '".$nome."', ".$id_user.")";
        $result = ['status' => true];
        echo json_encode($result, JSON_UNESCAPED_UNICODE);
        $stm = $connection->prepare($query);
        $stm->execute();
        $connection->commit();
    }catch(PDOException $e){
        $result = ['status' => false, 'MSG' => $e->getMessage()];
        echo json_encode($result, JSON_UNESCAPED_UNICODE);
    }
});

На моем logcat в android У меня есть это (теги на android коде):

D/latlong is: [lat/lng: (41.21793444169185,-8.519209139049053)]
D/latlong is lat: [41.21793444169185]
D/latlong is long: [-8.519209139049053]
D/latlong idUser: [7]
D/latlong json 111: [{"lat":"41.21793444169185","nome":"teste","lng":"-8.519209139049053","id_user":"7"}]
D/tagconvertstr1: [org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject]


Tnks для всех подсказок !! # stayHome # staySafe

...