我打電話這段代碼的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如果我使用正確的措詞,從機器人到頁面的數據在哪裏丟失?
謝謝大家!
測試它,一切工作正常。所以問題不在代碼中。 Log.i(「ServerConn」,response.getStatusLine()。toString());的輸出是什麼?你確定這個問題是在android部分嗎?您是否使用瀏覽器測試了PHP腳本?有沒有錯誤信息? –
@matthias謝謝,我插入了一個日誌以確保正確地將字符串解析爲發送數據方法。服務器響應已返回http 200確定。我還在服務器端添加了一個沒有輸出任何內容的文本輸出。所以在android的某個地方有些東西正在迷失。 –
更多日誌發佈 –