Ich versuche, die Kommunikation zwischen meiner Android App und meinem WampServer im lokalen Netzwerk herzustellen.Senden Sie ein JSON-Objekt von Android zu PHP-Server mit POST-Methode und HttpURLConnection
Wenn ich Daten vom Server lesen möchte, hatte ich Erfolg, aber ich habe ein Problem, wenn ich versuche, Daten an den Server zu senden.
Ich bin mit einem Service eingerichtet, um die Kommunikation:
public class SynchronisationService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("http://192.168.37.23/happiness_barometer/php_input.php");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(false);
connection.setRequestMethod("POST");
connection.connect();
OutputStream outputStream = connection.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(outputStream);
JSONObject jsonObject = new JSONObject();
jsonObject.put("rate", 1);
writer.write(URLEncoder.encode(jsonObject.toString(), "UTF-8"));
writer.flush();
writer.close();
} catch (Exception e) {
Log.v("EXCEPTION", e.getMessage());
}
}
}).start();
stopSelf();
return flags;
}
}
Und meine PHP-Datei:
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=happiness_barometer;charset=utf8', 'utilisateur', '');
} catch (Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$sql = $bdd->prepare(
'INSERT INTO rates (rate, comment, category, day, month, year, hour, minute, day_of_week, week, rate_number)
VALUES (:rate, :comment, :category, :day, :month, :year, :hour, :minute, :day_of_week, :week, :rate_number)');
if (!empty($_POST['rate'])) {
$sql->execute(array(
'rate' => $_POST['rate'],
'comment' => '',
'category' => 'pro',
'day' => 19,
'month' => 8,
'year' => 2015,
'hour' => 18,
'minute' => 3,
'day_of_week' =>3,
'week' => 33,
'rate_number' => 2));
}
?>
Wenn ich meine Anwendung ausführen, wird nichts hinzugefügt meine Datenbank. Ich denke, es gibt nichts in der $_POST['rate']
.
Bitte sagen Sie mir, was in meinem Code falsch ist?
können Sie Ihre Post Stack-Trace (Logcat) –
@vinay Maneti: Ich habe etwa 200 Zeilen in meinem Logcat. Welche Zeilen sind wichtig? –
die sich auf Ihren SynchronisationsService und Ihre Aktivitätsklassen beziehen –