下面是一段试图发布到本地服务器上的 PHP 脚本的代码片段。我正在将数据传输回服务器的 MySQL 表,并且由于数据量非常小,我想我会使用 HttpClient 将数据嵌入到 URL 参数中。
然而,即使我从服务器得到的响应是正常的(HTTP 代码 = 200),很明显服务器端 PHP 脚本没有得到正确格式的数据(对 MySQL 表没有影响)。但是,当我在浏览器中手动输入 URL+args 时,如下所示:
http://10.0.0.13/jobs_returndata_test.php?jobnum=189193&pnum=3&entime=13:00&extime=14:00
例如,一切正常(PHP 脚本正确写入 MySQL 表)。
我的问题:有没有一种方法可以实际查看 HttpClient 发送的内容?(即,HttpPost 对象的整个 .toString 内容?)。这是Android端的片段:
// Create a new HttpClient and Post Header, send data as args to PHP file
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.0.13/jobs_returndata.php");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("jobnum",convertSimple(jobNum)));
nameValuePairs.add(new BasicNameValuePair("pnum",convertSimple(rowNum)));
nameValuePairs.add(new BasicNameValuePair("entime",enteredInTime));
nameValuePairs.add(new BasicNameValuePair("extime",enteredOutTime));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
Log.i("HTTP Post", "Execute Post sending jobnum="+ convertSimple(jobNum) +
"&pnum="+ convertSimple(rowNum) + "&entime=" + enteredInTime
+ "&extime=" + enteredOutTime);
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
Log.i("HTTP Post", "Response from server = " + response.getStatusLine().getReasonPhrase() + " Code = " + convertSimple(response.getStatusLine().getStatusCode()));
} catch (ClientProtocolException e) {
Log.e("HTTP Post", "Protocol error = " + e.toString());
} catch (IOException e) {
Log.e("HTTP Post", "IO error = " + e.toString());
}
我的服务器端 PHP 文件是:
?php
$jobnum=$_GET['jobnum'];
//echo "jobnum = $jobnum <br />";
$pnum=$_GET['pnum'];
//echo "pnum = $pnum <br />";
$entime=$_GET['entime'];
//echo "entime = $entime <br />";
$extime=$_GET['extime'];
//echo "extime = $extime <br />";
$dbh=mysql_connect ("localhost", "Steve", "pluggin");
mysql_select_db ("DriverJobs");
$result = mysql_query("UPDATE jobs SET EntryTime = '$entime' WHERE JobNumber = '$jobnum' AND PointNum = '$pnum' ");
$result = mysql_query("UPDATE jobs SET ExitTime = '$extime' WHERE JobNumber = '$jobnum' AND PointNum = '$pnum' ") ;
//echo "done <br />";
?>
相关部分的 logcat:
06-22 13:33:11.341: I/HTTP Post(27788): 执行 Post 发送 jobnum=189193&pnum=3&entime=9:00&extime=9:05 06-22 13:33:11.581: I/HTTP Post(27788):来自服务器的响应 = OK 代码 = 200
权限很好(在 INTERNET 的清单文件中,对于 PHP 文件,Apache2 已打开并正在运行,API=8,使用带有 Android 模拟器的 Eclipse)。convertSimple()是一个 2 衬里,它返回一个 int 原语的等效字符串。
提前感谢您查看此内容!