Android访问php webservice_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android访问php webservice

Android访问php webservice

 2014/4/16 9:55:25  xiaochao1234  博客园  我要评论(0)
  • 摘要:如果是PHP做的服务端,而我们要用android去访问,怎么办?当然可以用REST,但也可以用点笨的方法,比如可以让PHP的服务端返回JSON或XML数据,而Android端则可以用APACHE的httpclient去访问。下面是一个例子,假设数据表中users表有如下字段(mysql):idusers,UserName,FullName加点数据,然后在服务端建立一个webservice1.php,作用是直接返回服务端数据库的数据,如下:<?phpif(isset
  • 标签:android Web Service PHP Webservice

如果是PHP做的服务端,而我们要用android去访问,怎么办?当然可以用REST,但也可以用点笨的方法,比如可以让PHP的服务端返回JSON或XML数据,而Android端则可以用APACHE的httpclient去访问。

下面是一个例子,假设数据表中users表有如下字段(mysql):
idusers,UserName,FullName

加点数据,然后在服务端建立一个webservice1.php,作用是直接返回服务端数据库的数据,如下:

class="php plain"><?php if (isset($_GET['user']) && functions">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',$linkor die('Cannot select the DB');   $query "SELECT * FROM 'users'"; $result = mysql_query($query,$link);   $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调用:

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); String url = "http://10.0.2.2:8082/myphp/phpWebservice/webservice1.php?user=1&format=json"; 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数据。

<?php $json file_get_contents('php://input'); $obj = json_decode($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

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端发送的数据保存到服务端了。

发表评论
用户名: 匿名