目前在公司的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(“https://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”);
}</jarray.length();i++){

}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