Próbuję nawiązać komunikację między moją aplikacją na Androida a moim serwerem WampServer w sieci lokalnej.Wysyłanie obiektu JSON z systemu Android do serwera PHP za pomocą metody POST i HttpURLConnection
Kiedy chcę odczytać dane z serwera, odniosłem sukces, ale mam problem, gdy próbuję wysłać dane na serwer.
Używam Service do ustanowionego komunikatem:
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;
}
}
A mój plik php:
<?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));
}
?>
Kiedy uruchamiam moją aplikację, nic nie dodaje do mojego Baza danych. Myślę, że nie ma nic w $_POST['rate']
.
Proszę, powiedz mi, co jest nie tak w moim kodzie?
można zamieścić swoje ślad stosu (logcat) –
@vinay Maneti: Mam około 200 linii w moim logcat. Które linie są ważne? –
które są powiązane z twoją Usługą synchronizacji i klasami aktywności –