Я занимаюсь разработкой приложения 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