2011-11-11 117 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

感谢你的想法...这是在我的清单 –