打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
android与php后台服务的数据交换例子webservice1.php

android与php后台服务的数据交换例子webservice1.php

泡在网上的日子 发表于2013-05-06 20:30, 1218 次阅读 webservice

摘要 如果是PHP做的服务端,要用android去访问,如何办?当然可以用REST,但也可以用点笨的方法,比如PHP的服务端可以用JSON和XML提供返回的数据,而android端则可以用APACHE的httpclient去访问. 下面是一个例子,假设数据表中users表有如下字段(mysql): idusers,UserNam

如果是PHP做的服务端,要用android去访问,如何办?当然可以用REST,但也可以用点笨的方法,比如PHP的服务端可以用JSON和XML提供返回的数据,而android端则可以用APACHE的httpclient去访问.

下面是一个例子,假设数据表中users表有如下字段(mysql):
idusers,UserName,FullName,加点数据.然后在服务端PHP,建立一个webservice1.php,作用是直接返回服务端数据库的数据,如下:

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

 则可以把数据表输出为JSON或者XML格式了.客户端的ANDROID调用:

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

再搞个webservice2.php,该文件用来把客户端传送过去的JSON数据保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$json = file_get_contents('php://input');
$obj = json_decode($json);
//echo $json;
//保存数据库
$con = mysql_connect('localhost','root','XXX') or die('Cannot connect to the DB');
mysql_select_db('jsonandroid',$con);
  mysql_query("INSERT INTO `users` (UserName, FullName)
VALUES ('".$obj->{'UserName'}."', '".$obj->{'FullName'}."')");
mysql_close($con);
  $posts = array(1);
    header('Content-type: application/json');
    echo json_encode(array('posts'=>$posts));
?>

 而ANDROID端的,可以构造JSON,发送到webservice2.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
try {
            JSONObject json = new JSONObject();
            json.put("UserName", "test2");
            json.put("FullName", "1234567");
            HttpParams httpParams = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParams,
                    TIMEOUT_MILLISEC);
            HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
            HttpClient client = new DefaultHttpClient(httpParams);
                                    String url = "http://10.0.2.2:8082//myphp/phpWebservice/webservice2.php";
            HttpPost request = new HttpPost(url);
            request.setEntity(new ByteArrayEntity(json.toString().getBytes(
                    "UTF8")));
            request.setHeader("json", json.toString());
            HttpResponse response = client.execute(request);
            HttpEntity entity = response.getEntity();
                    
            if (entity != null) {
                InputStream instream = entity.getContent();
                String result = RestClient.convertStreamToString(instream);
                Log.i("Read from server", result);
                Toast.makeText(this,  result,
                        Toast.LENGTH_LONG).show();
            }

这样,就可以把ANDROID发送的数据保存到服务端了

上一篇:Android程序框架PhoneGap初探
PhoneGap是由温哥华的一家小公司研发的多平台的移动开发框架,支持流行的大多数移动设备(iPhone,Android ,BlackBerry,Symbian,Palm,Window Phone).目前phonegap获得Apple,IBM,NOKIA,palm等众多公司的支持. phonegap的优点: 1.兼容性,完全做到了written o
下一篇:Android ViewPager使用详解
support.v4 是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等。那如何使用它呢,与LisstView类似,我们也需要一个适
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用JSON从Android发送Base64图像到php webservice,解码,保存到SQL
android使用JSON进行网络数据交换(服务端、客户端)的实现
android发送/接收json数据
android 解析json数据格式
HttpClient4.0基础用法
php推送例子(第三方极光推送)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服