Blog

如何使用HTTP和JSON连接PHP服务端和Android客户端

目前在公司的WEB项目中遇到关于通过PHP提供Android服务的需求,所以借此介绍一下关于PHP和Android如何进行通讯并服务彼此。 由于PHP可以为Android提供数据库的交互,并进行数据检索信息提供给Andriod系统,所以使用PHP作为服务端是一个不错的选择。Android系统(手机)可以使用HTTP协议来链接PHP脚本。我们可以先简要通过图形来介绍PHP服务端和Android系统的服务架构,PHP服务端当然是有PHP脚本和MySQL数据库组成。 我们可以通过JSON(JavaScript Object Notation)的方式进行通讯。JSON是一个轻量级基于文本的开放性标准,专门为进行数据交互而设计的脚本。 JSON在我们的应用程序中使用的大致流程如下:
  1. 当Android应用程序将执行,它将Android设备连接到PHP脚本。
  2. PHP脚本将会从MYSQL数据库中提取数据,并将它编码成JSON格式,发送到Android设备。
  3. 最后,Android应用程序获取这些已编码的数据,反解码数据并将数据显示在Android设备上。
在Android系统的APP中使用的数据请求类似如下:
  1. 使用HTTPPOST发送数据请求。
  2. 转换为字符串。
  3. 反解码JSON数据,然后就可以显示这些数据。
APP中的代码类似如下: public class inf extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String result = null; InputStream is = null; StringBuilder sb=null; String result=null; //http post try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://127.0.0.1/inf.php"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e){ Log.e("log_tag", "Error in http connection"+e.toString()); } //convert response to string try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); sb = new StringBuilder(); sb.append(reader.readLine() + "n"); String line="0"; while ((line = reader.readLine()) != null) { sb.append(line + "n"); } is.close(); result=sb.toString(); }catch(Exception e){ Log.e("log_tag", "Error converting result "+e.toString()); } //paring data int fd_id; String fd_name; try{ jArray = new JSONArray(result); JSONObject json_data=null; for(int i=0;i<jArray.length();i++){ json_data = jArray.getJSONObject(i); fd_id=json_data.getInt("ID"); fd_name=json_data.getString("NAME"); } }catch(JSONException e1){ Toast.makeText(getBaseContext(), "No INF Found", Toast.LENGTH_LONG).show(); }catch (ParseException e1){ e1.printStackTrace(); } } } PHP服务端的获取信息的代码执行类似如下:
  1. PHP脚本链接到数据库。
  2. 根据Android发过来的请求对数据库使用SQL执行一个查询,获取数据信息。
  3. 然后以JSON数据格式输出。
类似代码如下: inf.php

Over 95% of our clients recommend our language services to others


Copyright © CCJK Technologies Co., Ltd. 2000-2017. All rights reserved.
TOP