Отправка информации на сервер, но информация где-то теряется

#php #android #sql

#php #Android #sql

Вопрос:

Я вызываю этот код в приложении для Android:

 public static void sendAccelerationData(String userIDArg, String dateArg, String timeArg,
            String timeStamp, String lat, String longi, String alt)
    {
        //fileName = "AddAccelerationData.php";

        //Add data to be send.
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(6);
        nameValuePairs.add(new BasicNameValuePair("userID", userIDArg));
        nameValuePairs.add(new BasicNameValuePair("date",dateArg));
        nameValuePairs.add(new BasicNameValuePair("time",timeArg));
        //nameValuePairs.add(new BasicNameValuePair("timeStamp",timeStamp));

        nameValuePairs.add(new BasicNameValuePair("lat",lat));
        nameValuePairs.add(new BasicNameValuePair("longi",longi));
        nameValuePairs.add(new BasicNameValuePair("alt",alt));

        //this.sendData(nameValuePairs);
        try
        {
            TextLog.addLogStuff("SERV Trying to connect to Server");
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new      
            HttpPost("http://myserver.php");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            Log.i("ServerConn", response.getStatusLine().toString());
            TextLog.addLogStuff("SERV PostData:  "   response.getStatusLine().toString());
                //Could do something better with response.
        }
        catch(Exception e)
        {
            Log.e("log_tag", "Error:  " e.toString());
            TextLog.addLogStuff("SERV Connection error:  "  e.toString());
        }  
    }
  

Затем код для myserver.php является:

   ?php


    //from the online tutorial:

    $usr = "bikemap";
      $pwd = "pedalhard";
      $db = "test";
      $host = "localhost";

      $cid = mysql_connect($host,$usr,$pwd);

      if (!$cid) { echo("ERROR: " . mysql_error() . "n"); }

      $userID = $_POST['userID'];
      $date = $_POST['date'];
      $time = $_POST['time'];

      $lat = $_POST['lat'];
      $long = $_POST['longi'];
      $alt = $_POST['alt'];
       mysql_select_db("test");
      mysql_query("INSERT INTO gpsdata (userID, date, time, lat, longi, alt) VALUES ('$userID', '$date', '$time', '$lat','$longi','$alt') ") or die(mysql_error()); 

      /*$SQL = " INSERT INTO gpsdata ";
    $SQL = $SQL . " (userID, date, time, lat, longi, alt) VALUES ";
    $SQL = $SQL . " ('$userID', '$date', '$time', '$lat','$longi','$alt') ";
    $result = mysql_query("$SQL");

    if (!$result) {
        echo("ERROR: " . mysql_error() . "n$SQLn"); } */

    //echo ("New Link Addedn");



    mysql_close($cid); 
    ?>
  

Каким-то образом информация не попадает на sql server. Чтобы просто запустить методы, я снова и снова передаю 6 строк для устранения неполадок. Ни один из которых не попадает на сервер. Есть мысли?

Редактировать:

Этим утром я попытался еще раз устранить неполадки. Я вставил эти строки в свой код Android:

 Log.i("ServerConn", response.getStatusLine().toString());
            TextLog.addLogStuff("SERV PostData:  "   response.getStatusLine().toString());
            TextLog.addLogStuff("SERV rawData:  "    nameValuePairs);
  

Я получил это обратно из текстового файла, созданного TextLog:

 11/11/2011 10:11:09:460 AM:  SERV userID:  Loren 
11/11/2011 10:11:09:464 AM:  SERV Trying to connect to Server 
11/11/2011 10:11:11:666 AM:  SERV PostData:  HTTP/1.1 200 OK 
11/11/2011 10:11:11:674 AM:  SERV rawData:  [userID=Loren, date=today, time=now,
    > lat=bit 1, longi=bit 2, alt=bit 3]
  

Значит, что-то не так либо с веб-страницей, либо с сервером, верно? Продолжение следует.

Редактировать v2:

Я добавил это в файл php:

 $string = "User ID:  ";
$string = $string . $userID;
$string = $string . "Date:  " . $date;
$string = $string . "n";


 $filename = 'test.txt';
 $fp = fopen($filename, "a");
 $write = fputs($fp, $string);
 fclose($fp);
  

И это содержимое текстового файла:

ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
ID пользователя: дата:
идентификатор пользователя: Дата:
ID пользователя: даты:

Вопрос 1 Правильно ли я использую формулировки для записи в текстовый файл? Я ответил на это ранее сегодня. Я использую правильную формулировку.

Вопрос 2 Если я использую правильную формулировку, где теряются данные с droid на страницу?

Спасибо всем!

Комментарии:

1. Протестировал, все работает нормально. Итак, проблема не в коде. Каков результат Log.i(«ServerConn», response.getStatusLine().toString());? Вы уверены, что проблема в части Android? Вы тестировали PHP-скрипт в браузере? Есть ли какие-либо сообщения об ошибках?

2. @matthias спасибо, я вставил журнал, чтобы убедиться, что строки анализируются в метод отправки данных правильно. Ответ сервера вернул http 200 ok. Я также добавил текстовый вывод на стороне сервера, который ничего не выводил. Итак, где-то в Android что-то теряется.

3. Я создал страницу для отправки на сервер, и когда я нажимаю кнопку post, все работает так, как должно на стороне сервера. Я полностью в тупике. Я вызываю метод post каждый раз, когда обновляется местоположение gps. Часто ли вызов будет проблематичным?

Ответ №1:

Убедитесь, что вы включили нижеприведенное в свой файл манифеста.

 <uses-permission android:name="android.permission.INTERNET"></uses-permission>