国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android App端與PHP Web端的簡單數據交互實現示例

2019-10-22 18:25:09
字體:
來源:轉載
供稿:網友

前言

由于學校科技立項的項目需要實現Android App端與PHP Web端的簡單數據交互的實現,當前場景是Web端使用的是MySql數據庫,Apache服務器和PHP語言編寫的。數據交互的簡單理解就是Android能向服務端進行數據獲取,同時也能進行數據提交。

實現流程

Android,PHP,數據交互,Android與PHP,Web端

流程說明

  1. Andorid Server端對MySql數據庫進行簡單的查詢操作,并將查詢數據結果轉換為Json格式提供給Andorid利用OKhttp讀取再解析Json展示到APP上;同時Andorid端利用OKhttp提交給Andorid Server端,由Server端對MySql數據庫對提交數據的添加。
  2. Apache Server端通過解析PHP源代碼,對MySql數據庫的增刪查改顯示在WebSite。

具體實現

Andorid Server

獲取數據

get_all_found_items.php

<?php header('Content-Type:text/html;charset=utf-8');/*設置php編碼為utf-8*//*  * Following code will list all the items  */   // array for JSON response $response = array();   // include db connect class require_once __DIR__ . '/db_connect.php';   // connecting to db $db = new DB_CONNECT();   // get all items from items table $result = mysql_query("SELECT *FROM items WHERE type='1'") or die(mysql_error()); // check for empty result if (mysql_num_rows($result) > 0) {   // looping through all results   // items node   $response["items"] = array();     while ($row = mysql_fetch_array($result)) {     // temp user array     $items = array();     $items["what"] = $row["what"];     $items["when"] = $row["when"];     $items["where"] = $row["where"];     $items["detail"] = $row["detail"];    $items["posttime"] = $row["posttime"];   $resultcontcat = mysql_query("SELECT *FROM guests") or die(mysql_error());  while ($row1 = mysql_fetch_array($resultcontcat)) {   if ($row1["id"] == $row["gid"]){  $items["contact"] = $row1["contact"];  }  }    // push single items into final response array     array_push($response["items"], $items);   }   // success   $response["success"] = 1;     // echoing JSON response   echo json_encode($response,JSON_UNESCAPED_UNICODE); } else {   // no items found   $response["success"] = 0;   $response["message"] = "No items found";     // echo JSON   echo json_encode($response,JSON_UNESCAPED_UNICODE); } ?>

如以上PHP代碼可知通過require_once()函數包含db_connect.php文件,執行數據庫配置文件。定義數組$response接收查詢的數據結果,通過判斷不同的情況賦值$response[“success”],并返回到Web頁面顯示

PHP文件執行結果

Android,PHP,數據交互,Android與PHP,Web端

JSON

 {  "items": [    {      "what": "手表",      "when": "2017-10-21 00:00:00",      "where": "北區宿舍樓#504",      "detail": "白色的手表,XX品牌",      "posttime": "2017-10-21 13:03:09",      "contact": "138123456"    },    {      "what": "手機",      "when": "2017-10-04 00:00:00",      "where": "北區商店#111",      "detail": "iphone6s,土豪金",      "posttime": "2017-10-21 13:03:46",      "contact": "137123456"    },    {      "what": "電腦",      "when": "2017-10-21 14:39:54",      "where": "圖書館#203",      "detail": "聯想品牌筆記本",      "posttime": "2017-10-21 17:08:14",      "contact": "5670001"    },    {      "what": "細說PHP",      "when": "2017-09-21 13:03:46",      "where": "南館#403",      "detail": "黑色封面,第二版《細說PHP》",      "posttime": "2017-10-21 17:36:53",      "contact": "63513641"    }  ],  "success": 1}

提交數據

create_found_items.php

<?php header('Content-Type:text/html;charset=utf-8');/*設置php編碼為utf-8*/  /*  * Following code will create a new product row  * All product details are read from HTTP GET Request  */   // array for JSON response $response = array();   // check for required fields if (isset($_GET['what']) && isset($_GET['when']) && isset($_GET['where']) && isset($_GET['detail'])&& isset($_GET['contact'])) {     $what = $_GET['what'];   $when = $_GET['when'];   $where = $_GET['where'];   $detail = $_GET['detail'];   $contact = $_GET['contact'];    // include db connect class   require_once __DIR__ . '/db_connect.php';     // connecting to db   $db = new DB_CONNECT();     // mysql inserting a new row  $result2 = mysql_query("INSERT INTO guests(contact) VALUES('$contact')");  $gidresult = mysql_query("SELECT id FROM `guests` WHERE contact='$contact'");  while ($row = mysql_fetch_array($gidresult)) {   $gid=$row['id']; }  $result1 = mysql_query("INSERT INTO items(`what`, `when`, `where`, `type` ,`gid`, `detail`) VALUES('$what', '$when', '$where', '1', '$gid', '$detail')");      // check if row inserted or not   if ($result1 && $result2) {     // successfully inserted into database     $response["success"] = 1;     $response["message"] = "Items successfully created.";       // echoing JSON response   echo json_encode($response,JSON_UNESCAPED_UNICODE);    } else {     // failed to insert row     $response["success"] = 0;     $response["message"] = "Oops! An error occurred.";       // echoing JSON response   echo json_encode($response,JSON_UNESCAPED_UNICODE);    } } else {   // required field is missing   $response["success"] = 0;   $response["message"] = "Required field(s) is missing";     // echoing JSON response   echo json_encode($response,JSON_UNESCAPED_UNICODE);  } ?>

判斷GET請求的參數是否都存在,把獲取的GET請求參數作為數據INSERT TO MySQL數據庫。判斷INSERT執行過程賦值$response[“success”]對應相應的$response[“message”],顯示在Web頁面。

執行結果

Android,PHP,數據交互,Android與PHP,Web端

Andorid

獲取數據

核心代碼 queryLosts()函數

private void queryLosts() { losts.clear(); new Thread(new Runnable() {  @Override public void run() {  // TODO Auto-generated method stub       OkHttpClient okHttpClient = new OkHttpClient();     String url = "http://webSite/androidapi/get_all_lost_items.php";     Request request = new Request.Builder()         .url(url)         .build();     Call call = okHttpClient.newCall(request);     try {       Response response = call.execute();       String res = response.body().string();       if (res != null && !res.trim().equals("")){         JSONObject jsonObject = new JSONObject(res);         if (jsonObject.getInt("success") == 1){           JSONArray jsonArray = jsonObject.getJSONArray("items");           for (int i = jsonArray.length() - 1;i >= 0;i--){             JSONObject item = jsonArray.getJSONObject(i);             String what = null;             try {               what = item.getString("what");             }catch (Exception e){             }             String when = null;             try{               when = item.getString("when");             }catch (Exception e){             }             String where = null;             try{               where = item.getString("where");             }catch (Exception e){             }             String detail = null;             try {               detail = item.getString("detail");             }catch (Exception e){             }             String contact = null;             try {               contact = item.getString("contact");             }catch (Exception e){             }             Lost lost = new Lost();             lost.setTitle(what);             String des = "地點:" + (where == null?"":where) +"   "+"時間:" + (when == null?"":when)+"/r" + "   "+"描述:" + (detail == null?"":detail);             lost.setDescribe(des);             lost.setPhone(contact == null?"":contact);             losts.add(lost);           }         }       }     } catch (Exception e) {       e.printStackTrace();       showErrorView(0);     }     if (losts == null || losts.size() == 0) {     handler.sendEmptyMessage(1);       return;     }     if (losts.size() > 0){      handler.sendEmptyMessage(2);     } } }).start();

利用Android網絡框架OKhttp,OKhttp一個處理網絡請求的開源項目,是安卓端最火熱的輕量級框架.請求接口url地址,獲取Json數據利用JSONObject對Json數據進行解析。

提交數據

核心代碼 addLost()函數

public Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { switch(msg.what){  case 1:  Toast.makeText(this,"提交成功",Toast.LENGTH_LONG).show();  break;  case 2:  Toast.makeText(this,"提交失敗",Toast.LENGTH_LONG).show();  break; } }};private void addLost(){ OkHttpClient okHttpClient = new OkHttpClient(); String url ="http://website/androidapi/create_lost_items.php?what="+title+"&when="+time+"&where="+place+"&detail="+describe+"&contact="+photo+""; Request request = new Request.Builder()  .url(url)  .build();  try{ Response response = okHttpClient.newCall(request).execute(); res = response.body().string(); handler.sendEmptyMessage(1); }catch (Exception e) { e.printStackTrace(); handler.sendEmptyMessage(2); }}

同樣利用Okhttp,GET方式提交參數,try-catch獲取異常,通過返回值給出一定的提交結果提示。

代碼測試

數據同步

Web端

Android,PHP,數據交互,Android與PHP,Web端

Andorid端

Android,PHP,數據交互,Android與PHP,Web端

數據提交

Android,PHP,數據交互,Android與PHP,Web端

提交結果

Android,PHP,數據交互,Android與PHP,Web端

Android,PHP,數據交互,Android與PHP,Web端

結語

以上過程基本實現,項目基本上可以交差了。這個項目PHP部分主要是由自己在弄,也是邊學邊做。Android方面是另外一個同學主要負責,期間也求助過我實習時結交的朋友幫助。感謝所有付出與幫助的人。希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌兰县| 庄河市| 屏山县| 博白县| 新泰市| 芮城县| 临澧县| 南平市| 福泉市| 阿拉尔市| 公安县| 榆社县| 崇阳县| 富蕴县| 扎鲁特旗| 吉安县| 大同市| 宽城| 布拖县| 蕲春县| 鹤庆县| 丁青县| 扎鲁特旗| 谷城县| 平潭县| 南通市| 江永县| 古浪县| 砚山县| 武鸣县| 张家口市| 吉隆县| 清涧县| 合阳县| 康马县| 泸州市| 鸡西市| 石狮市| 湟源县| 汝城县| 台湾省|