日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android和PHP MYSQL交互開發實例

瀏覽:43日期:2022-09-07 18:48:42
總述

簡單的說,安卓客戶端通過Http向本地服務器發出請求,訪問指定的php代碼,服務器端通過php代碼執行數據庫的操作, 返回相應的JSON數據。服務器可以理解為運行著某些服務器容器的電腦,比如你的電腦安裝了Apache并保持運行,那么電腦就變成了一臺服務器,只是這臺服務器沒有入網,只能本地訪問。安卓客戶端通過HttpURLConnection向服務器中指定的php文件提交POST或GET請求,服務器端相應php代碼接受來自客戶端的參數(如果是帶參傳遞)進行數據庫的操作,返回JSON數據給客戶端。

下面我以安卓客戶端通過用戶名密碼登陸為例進行說明。具體為:客戶端通過POST方法向服務器提交2個參數:用戶名(username)和密碼(password)到指定login.php文件(這個文件寫登陸驗證的php代碼),該文件中通過查詢數據庫中是否存在該用戶以及密碼是否正確來返回客戶端相應的JSON數據。 既然選擇了PHP+MYSQL,那么使用wamp server套件是比較方便的一種選擇,用過它的朋友都應該輕車熟路了。

1.安卓客戶端

安卓客戶端所做的工作有:通過HttpURLConnection向服務器中指定的login.php文件提交POST或GET請求,服務器端接受來自客戶端的參數執行login.php文件進行數據庫的操作,返回JSON數據給客戶端。 這里只貼出代碼部分,至于界面只需要2個文本編輯框edittext用于輸入用戶名密碼,一個button登陸按鈕,其id自行設置即可。 登陸按鈕響應函數如下

loginbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {//登陸按鈕監聽事件/*((App)getApplicationContext()).setTextData(et.getText().toString());location_x.setText(((App)getApplicationContext()).getTextData());*/new Thread(new Runnable() { @Override public void run() {try { int result = login(); //login()為向php服務器提交請求的函數,返回數據類型為int if (result == 1) {Log.e('log_tag', '登陸成功!');//Toast toast=null;Looper.prepare();Toast.makeText(PhpActivity.this, '登陸成功!', Toast.LENGTH_SHORT).show();Looper.loop(); } else if (result == -2) {Log.e('log_tag', '密碼錯誤!');//Toast toast=null;Looper.prepare();Toast.makeText(PhpActivity.this, '密碼錯誤!', Toast.LENGTH_SHORT).show();Looper.loop(); } else if (result == -1) {Log.e('log_tag', '不存在該用戶!');//Toast toast=null;Looper.prepare();Toast.makeText(PhpActivity.this, '不存在該用戶!', Toast.LENGTH_SHORT).show();Looper.loop(); }} catch (IOException e) { System.out.println(e.getMessage());} }}).start(); }});

登陸按鈕響應函數中有個login()函數,這個函數就是完成向服務器提交申請并獲取服務器返回json數據的功能

//用戶登錄提交post請求//向服務器提交數據1.user_id用戶名,2.input_pwd密碼//返回JSON數據{'status':'1','info':'login success','sex':'0','nicename':''}private int login() throws IOException { int returnResult=0; String user_id=et.getText().toString(); String input_pwd=pwd.getText().toString(); if(user_id==null||user_id.length()<=0){Looper.prepare();Toast.makeText(PhpActivity.this,'請輸入賬號', Toast.LENGTH_LONG).show();Looper.loop();return 0; } if(input_pwd==null||input_pwd.length()<=0){Looper.prepare();Toast.makeText(PhpActivity.this,'請輸入密碼', Toast.LENGTH_LONG).show();Looper.loop();return 0; } String urlstr='http://192.168.191.1/LBS/login.php'; URL url = new URL(urlstr); HttpURLConnection http= (HttpURLConnection) url.openConnection(); String params='uid='+user_id+’&’+'pwd='+input_pwd; http.setDoOutput(true); http.setRequestMethod('POST'); OutputStream out=http.getOutputStream(); out.write(params.getBytes()); out.flush(); out.close(); BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(http.getInputStream()));//獲得輸入流 String line=''; StringBuilder sb=new StringBuilder(); while (null!=(line=bufferedReader.readLine())){sb.append(line); } String result= sb.toString(); try {JSONObject jsonObject= new JSONObject(result);returnResult=jsonObject.getInt('status'); } catch (Exception e) {Log.e('log_tag', 'the Error parsing data '+e.toString()); } return returnResult;}

對于這個login()函數有幾點說明:

1) urlstr='http://192.168.191.1/LBS/login.php'。其中192.168.191.1即本地電腦運行的Apache服務器的地址,這個地址會映射到Wamp安裝目錄下的WWW目錄,LBS即為WWW目錄下的文件夾。

一開始我使用android studio自帶模擬器進行測試,網上說是瀏覽器訪問10.0.2.0什么的就能訪問電腦上的本地Apache服務器,但是沒能成功訪問wamp自帶的apache服務器。

最后找到一個極好方法,就是使用真機測試,作為服務器的電腦需要安裝一個wifi共享軟件(如獵豹wifi),用要測試的真機連接該wifi后,手機瀏覽器訪問http://192.168.191.1,至此服務器環境已經搭建成功。login.php是放在電腦的apache服務器下的,比如我的是在D:wampwwwLBS文件夾下。

2) HttpURLConnection。本人曾在網上找到過一些安卓網絡請求的方法,但是大多都已棄用,使用HttpURLConnection是當前還未棄用的一種方法,當然對于高手來說,這就不值一提了。

3) JSONObject。 由于在后面的php代碼中所返回的數據為json數據類型,所以需要在客戶端進行解析,這并不困難,不清楚的可以搜索一下。

4)之前已經說過,本人對安卓一竅不通,所以在測試時犯了一個大忌,就是網絡訪問不能放在主線程中,否則會阻塞主線程,造成UI假死等錯誤,所以需要單開一個線程,即 登陸按鈕響應函數中的run方法。

2.服務器端

login.php在服務器容器中,時刻響應著外部的訪問請求,主要工作是:

1)獲取手機端通過Post請求發送的用戶名密碼。

2)連接數據庫,從數據庫中查找是否有與該用戶名密碼一致的記錄,根據查找結果返回不同的Json數據。

3)Json數據是一種有效的客戶端與服務器端的交互方式。 

<?php /**用戶登錄,服務器進行的處理*/include('conn.php'); mysql_select_db('lbs'); $getid=$_POST[’uid’];//客戶端post過來的用戶名$getpwd=$_POST[’pwd’];//客戶端post過來的密碼 $sql=mysql_query('SELECT * FROM user WHERE userid =’$getid’'); $result=mysql_fetch_assoc($sql);if(!empty($result)){//存在該用戶if($getpwd==$result[’password’]){//用戶名密碼匹配正確mysql_query('UPDATE user SET status=’1’ WHERE id =$result[id]');/*這里的數組不需要加單引號*/$back[’status’]='1';$back[’info’]='login success';$back[’sex’]=$result[’sex’];$back[’nicename’]=$result[’nicename’];echo(json_encode($back)); }else{/*密碼錯誤*/$back[’status’]='-2';$back[’info’]='password error';echo(json_encode($back)); } }else{//不存在該用戶$back[’status’]='-1';$back[’info’]='user not exist';echo(json_encode($back)); } mysql_close(); ?>

其中conn.php是數據庫連接文件,代碼如下

<?phperror_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED); $conn=mysql_connect('localhost','root','admin') or die('數據庫服務器連接錯誤'.mysql_error()); mysql_select_db('mylocation',$conn) or die('數據庫訪問錯誤'.mysql_error()); mysql_query('SET NAMES ’utf8’');?>3.MYSQL數據庫

至于數據庫,可以自行建立,根據上面php代碼可知,數據庫中有一個user表,表中有4個字段,分別是userid,password,nicename,sex.大家可自行建立即可(nicename,sex在本例中沒有用到)。截圖如下

Android和PHP MYSQL交互開發實例

上述工作完成后,將客戶端部署到真機上進行測試

輸入用戶名密碼,點擊登陸按鈕,結果如下:

Android和PHP MYSQL交互開發實例

4.總結

本文所講只是php和安卓結合最簡單的一個例子,其實有許多大項目都是采用這種模式,比如新浪微博客戶端等,感興趣的讀者可以查詢相關的資料數據比如《Android+PHP最佳實踐》,再次說明,由于本人也是個菜鳥,從許多前輩們的博文中學到了許多,所以在這里和大家分享一下自己的學習經驗,所以如果文中有錯誤之處還歡迎大家批評指正。 

以上就是Android和PHP MYSQL交互開發實例的詳細內容,更多關于Android和PHP交互的資料請關注好吧啦網其它相關文章!

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
丝袜脚交一区二区| 国产伦精品一区二区三区视频| 日韩一二三区在线观看| 亚洲欧美日韩专区| 亚洲综合不卡| 日韩在线观看中文字幕| 亚洲毛片网站| 国产欧美日韩免费观看| 国产日韩中文在线中文字幕| 日本亚洲视频| 国产精品美女久久久| 模特精品在线| 欧美在线首页| 福利在线一区| 日韩午夜av| 欧美视频久久| 国产在线一区不卡| 国产综合亚洲精品一区二| 亚洲欧美视频| 日韩高清在线一区| 国内在线观看一区二区三区| 成人羞羞视频播放网站| 在线国产日韩| 欧美黄页在线免费观看| 日韩欧美一区免费| 亚洲伦乱视频| 中文字幕一区二区av| 成人午夜在线| 亚洲在线一区| 久久亚洲黄色| 欧美一级专区| 国产91在线播放精品| 亚洲少妇诱惑| 麻豆视频一区二区| 午夜久久99| 国内精品美女在线观看| 欧美一区=区| 鲁大师精品99久久久| 99国产精品久久久久久久成人热| 国产精品中文字幕制服诱惑| 91看片一区| 欧美日本一区| 亚洲一区观看| 国产福利电影在线播放| 天堂俺去俺来也www久久婷婷| 岛国av在线网站| 欧美日韩网址| 亚洲精品免费观看| 亚洲成人免费| av资源新版天堂在线| 国产欧美88| 欧美日韩一区二区三区在线电影| 好看的亚洲午夜视频在线| 福利一区二区| 成人午夜网址| 国产女人18毛片水真多18精品| 国产一区导航| 国产亚洲在线| 国产午夜久久| 99riav1国产精品视频| 亚洲高清av| 欧美美女一区| 吉吉日韩欧美| 136国产福利精品导航网址| 成人国产精品久久| 久久久久久婷| 日韩精品看片| 国产在线|日韩| 国产91精品对白在线播放| 久久激情一区| 久久精品国产大片免费观看| 欧美成人基地| 91久久视频| 日本vs亚洲vs韩国一区三区二区| 中文字幕日本一区二区| 视频一区在线播放| 日韩精品一区二区三区中文在线 | 在线亚洲精品| 四虎在线精品| 国产在线不卡一区二区三区| 日韩电影免费在线观看| 欧美日韩在线观看视频小说| 免费日韩精品中文字幕视频在线| 午夜久久久久| 日本欧美一区二区在线观看| 精品午夜视频| 欧美女激情福利| 日本久久二区| 福利在线一区| 鲁大师影院一区二区三区| 欧美精品影院| 中文字幕系列一区| 亚洲精选av| 日韩欧美国产精品综合嫩v| 亚洲永久字幕| 国产一区精品福利| 蜜桃视频第一区免费观看| 精品美女视频| 影音国产精品| 精品亚洲a∨| 亚洲一区av| 久久国产成人午夜av影院宅| 免费国产自线拍一欧美视频| 久久a爱视频| 亚洲三级网址| 久久精品av| 精品国产三区在线| | 国产亚洲网站| 日韩理论片av| 久久99免费视频| 亚洲欧美日本国产| 水蜜桃精品av一区二区| 欧美日韩18| 丝袜亚洲另类欧美| 99成人超碰| 国产精品xx| 成人台湾亚洲精品一区二区| 久久精品xxxxx| 综合激情网站| 99riav1国产精品视频| 久久婷婷丁香| 国产成人精品亚洲日本在线观看| 国产精品任我爽爆在线播放| 中文字幕亚洲精品乱码| 日韩天堂av| 老司机精品久久| 99久久夜色精品国产亚洲1000部| 国内自拍视频一区二区三区| 国产精品超碰| 国产一区二区三区四区二区| 欧美日韩在线精品一区二区三区激情综合 | 电影亚洲精品噜噜在线观看| 国产一区二区三区亚洲| 精品午夜av| 蜜臀久久精品| 欧美69视频| 午夜久久福利| 天堂va在线高清一区| 日韩动漫一区| 日韩精品亚洲专区| 国产色噜噜噜91在线精品| 国产精品久久乐| 美女国产精品久久久| 久久久久伊人| 国产高清一区| 在线一区二区三区视频| 亚洲综合电影| 亚洲精品大全| 成人看片网站| 国产九一精品| 国产精品99免费看| 国产欧美69| 午夜亚洲福利在线老司机| 久久精品五月| 国产一区二区三区四区大秀| 国产欧美日韩一区二区三区在线| 亚洲激情欧美| 色老板在线视频一区二区| 国产欧美激情| 午夜在线一区二区| 中文在线资源| 麻豆91精品视频| 国产伦理一区| 91成人在线网站| 欧美男人天堂| 亚洲免费播放| 久久亚洲不卡| 亚洲乱码一区| 蜜臀久久99精品久久久画质超高清 | 秋霞影院一区二区三区| 国产欧美一区二区三区国产幕精品| 99精品99| 国产农村妇女精品一区二区| 伊人影院久久| 亚洲黄色中文字幕| 国产精品jk白丝蜜臀av小说| 日产欧产美韩系列久久99| 亚洲伊人精品酒店| 亚洲尤物在线| 日韩一级欧洲| 久久视频一区| 91视频一区| 韩国一区二区三区视频| 精品久久在线| 欧美三级网址| 六月天综合网| 国产伦理久久久久久妇女| 你懂的网址国产 欧美| 国产美女高潮在线| 国产精品毛片| 精品国产欧美日韩| 日韩av不卡一区二区| 久久亚洲图片| aa亚洲婷婷| 午夜欧美视频| 私拍精品福利视频在线一区| 欧美丰满日韩| 久久精品国产亚洲夜色av网站| 午夜欧美巨大性欧美巨大|