歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android訪問php webservice簡單一例

Android訪問php webservice簡單一例

日期:2017/3/1 10:37:06   编辑:Linux編程

如果是PHP做的服務端,要用Android去訪問,如何辦?當然可以用REST,但也可以用點笨的方法,比如PHP的服務端可以用JSON和XML提供返回的數據,而android端則可以用APACHE的httpclient去訪問.

下面是一個例子,假設數據表中users表有如下字段(mysql):

idusers,UserName,FullName,加點數據.然後在服務端PHP,建立一個

webservice1.php,作用是直接返回服務端數據庫的數據,如下:

  1. <?php
  2. if(isset($_GET['user']) && intval($_GET['user'])) {
  3. $format = strtolower($_GET['format']) == 'json' ? 'json' : 'xml'; //xml is the default
  4. $user_id = intval($_GET['user']); //no default
  5. /* 連接數據庫*/
  6. $link = mysql_connect('localhost','root','xxxxx') or die('Cannot connect to the DB');
  7. mysql_select_db('jsonandroid',$link) or die('Cannot select the DB');
  8. $query = "SELECT * FROM `users`;";
  9. $result = mysql_query($query,$link) or die('Errant query: '.$query);
  10. $posts = array();
  11. if(mysql_num_rows($result)) {
  12. while($post = mysql_fetch_assoc($result)) {
  13. $posts[] = array('post'=>$post);
  14. }
  15. }
  16. /* json格式*/
  17. if($format == 'json') {
  18. header('Content-type: application/json');
  19. echo json_encode(array('posts'=>$posts));
  20. }
  21. else {
  22. header('Content-type: text/xml');
  23. echo '<posts>';
  24. foreach($posts as $index => $post) {
  25. if(is_array($post)) {
  26. foreach($post as $key => $value) {
  27. echo '<',$key,'>';
  28. if(is_array($value)) {
  29. foreach($value as $tag => $val) {
  30. echo '<',$tag,'>',htmlentities($val),'</',$tag,'>';
  31. }
  32. }
  33. echo '</',$key,'>';
  34. }
  35. }
  36. }
  37. echo '</posts>';
  38. }
  39. }
  40. ?>

則可以把數據表輸出為JSON或者XML格式了.客戶端的ANDROID調用:

  1. try {
  2. HttpParams httpParams = new BasicHttpParams();
  3. HttpConnectionParams.setConnectionTimeout(httpParams,
  4. TIMEOUT_MILLISEC);
  5. HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
  6. HttpParams p = new BasicHttpParams();
  7. p.setParameter("user", "1");
  8. HttpClient httpclient = new DefaultHttpClient(p);
  9. String url = "http://10.0.2.2:8082/myphp/phpWebservice/webservice1.php?user=1&format=json";
  10. HttpPost httppost = new HttpPost(url);
  11. try {
  12. Log.i(getClass().getSimpleName(), "send task - start");
  13. List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
  14. 2);
  15. nameValuePairs.add(new BasicNameValuePair("user", "1"));
  16. httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
  17. ResponseHandler<String> responseHandler = new BasicResponseHandler();
  18. String responseBody = httpclient.execute(httppost,
  19. responseHandler);
  20. // 解析JSON返回的 JSONObject json = new JSONObject(responseBody);
  21. JSONArray jArray = json.getJSONArray("posts");
  22. ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
  23. for (int i = 0; i < jArray.length(); i++) {
  24. HashMap<String, String> map = new HashMap<String, String>();
  25. JSONObject e = jArray.getJSONObject(i);
  26. String s = e.getString("post");
  27. JSONObject jObject = new JSONObject(s);
  28. map.put("idusers", jObject.getString("idusers"));
  29. map.put("UserName", jObject.getString("UserName"));
  30. map.put("FullName", jObject.getString("FullName"));
  31. mylist.add(map);
  32. }
  33. Toast.makeText(this, responseBody, Toast.LENGTH_LONG).show();
Copyright © Linux教程網 All Rights Reserved