2011-11-11 119 views
1

我打電話這段代碼的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$SQL\n"); } */ 

    //echo ("New Link Added\n"); 



    mysql_close($cid); 
    ?> 

莫名其妙的信息沒有把它交給sql服務器。爲了讓方法開始,我一遍又一遍地傳遞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] 

所以一定有什麼問題或者與網頁或服務器,右?更多來。

編輯版:

我已將此添加到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:日期:
用戶ID:日期:

問題1我是否使用正確的措辭寫入文本文件?我今天早些時候回答了。我正在使用正確的措詞。

問題2如果我使用正確的措詞,從機器人到頁面的數據在哪裏丟失?

謝謝大家!

+0

測試它,一切工作正常。所以問題不在代碼中。 Log.i(「ServerConn」,response.getStatusLine()。toString());的輸出是什麼?你確定這個問題是在android部分嗎?您是否使用瀏覽器測試了PHP腳本?有沒有錯誤信息? –

+0

@matthias謝謝,我插入了一個日誌以確保正確地將字符串解析爲發送數據方法。服務器響應已返回http 200確定。我還在服務器端添加了一個沒有輸出任何內容的文本輸出。所以在android的某個地方有些東西正在迷失。 –

+0

更多日誌發佈 –

回答

1

請確保您已將以下內容包含在清單文件中。

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

感謝你的想法...這是在我的清單 –