Android調(diào)用PHP實(shí)現(xiàn)服務(wù)器端與客戶(hù)端的數(shù)據(jù)交互已成為當(dāng)前移動(dòng)互聯(lián)網(wǎng)開(kāi)發(fā)的主要手段之一。通過(guò)HTTP Post和Get方式來(lái)向服務(wù)器請(qǐng)求數(shù)據(jù),服務(wù)器通過(guò)PHP代碼進(jìn)行數(shù)據(jù)操作,同時(shí)返回相應(yīng)的數(shù)據(jù)。在Android與PHP之間完成互通這個(gè)過(guò)程中,經(jīng)常會(huì)出現(xiàn)各種問(wèn)題。今天我們來(lái)自始解析如何開(kāi)發(fā)一款完美的Android調(diào)用PHP接口的應(yīng)用程序。
在介紹如何讓Android調(diào)用PHP之前,我們需要明確一些基本的概念。HTTP Post和Get方式是Android向服務(wù)器請(qǐng)求數(shù)據(jù)的兩個(gè)主要方式。其中,POST請(qǐng)求是將數(shù)據(jù)嵌入請(qǐng)求體中,而GET則是將數(shù)據(jù)作為請(qǐng)求鏈接的一部分,這兩者的使用上略有不同。以下是PHP中的POST和GET處理代碼的例子:
// PHP接收POST請(qǐng)求數(shù)據(jù) if($_SERVER['REQUEST_METHOD']=='POST'){ $username = $_POST['username']; $password = $_POST['password']; } // PHP接收GET請(qǐng)求數(shù)據(jù) if($_SERVER['REQUEST_METHOD']=='GET'){ $username = $_GET['username']; $password = $_GET['password']; }
以上代碼需要放在PHP腳本最前面,用來(lái)完成接收請(qǐng)求數(shù)據(jù)的操作。
在Android開(kāi)發(fā)中,我們首先需要在應(yīng)用程序中使用HttpClient類(lèi)向服務(wù)器發(fā)起請(qǐng)求,以下是Android中的HttpPost和HttpGet請(qǐng)求的例子:
// Android中的HttpPost請(qǐng)求數(shù)據(jù) HttpPost httpRequest = new HttpPost("http://www.example.com/login.php"); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("username","admin")); params.add(new BasicNameValuePair("password","123456")); httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest); // Android中的HttpGet請(qǐng)求數(shù)據(jù) HttpGet httpRequest = new HttpGet("http://www.example.com/login.php?username=admin&password=123456"); HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
以上代碼可以在Activity中寫(xiě)入,用來(lái)完成請(qǐng)求和接收數(shù)據(jù)的全過(guò)程。
Android調(diào)用PHP實(shí)現(xiàn)服務(wù)器端與客戶(hù)端的數(shù)據(jù)交互是比較靈活的一種方式。我們可以在PHP中使用mysqli擴(kuò)展來(lái)操作數(shù)據(jù)庫(kù),完成登錄認(rèn)證、數(shù)據(jù)獲取、數(shù)據(jù)修改和數(shù)據(jù)刪除等操作。以下是使用mysqli和PHP完成登錄認(rèn)證的一個(gè)例子:
// PHP中使用mysqli擴(kuò)展實(shí)現(xiàn)登錄認(rèn)證 $mysqli = new mysqli('localhost','admin','123456','testdb'); if($_SERVER['REQUEST_METHOD']=='POST'){ $username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM user WHERE username='".$username."' AND password='".$password."'"; $result = $mysqli->query($sql); if($result && $result->num_rows==1){ echo 'success'; }else{ echo 'fail'; } }
以上代碼中,我們使用了$mysqli變量來(lái)初始化一個(gè)mysqli連接,然后使用SQL語(yǔ)句進(jìn)行查詢(xún)處理,最后根據(jù)查詢(xún)結(jié)果,返回相應(yīng)的結(jié)果。
Android調(diào)用PHP實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)膽?yīng)用廣泛,整個(gè)過(guò)程中,需要處理的問(wèn)題十分復(fù)雜和繁瑣,但是只要我們掌握了一定的基礎(chǔ)知識(shí),就能完成開(kāi)發(fā)任務(wù)。現(xiàn)在,大量的應(yīng)用程序都使用了這種技術(shù),如果你也對(duì)此感興趣,那么就趕緊動(dòng)手試試吧!