Android访问php webservice简单一例
如果是PHP做的服务端,要用Android去访问,如何办?当然可以用REST,但也可以用点笨的方法,比如PHP的服务端可以用JSON和XML提供返回的数据,而android端则可以用APACHE的httpclient去访问.
下面是一个例子,假设数据表中users表有如下字段(mysql):
idusers,UserName,FullName,加点数据.然后在服务端PHP,建立一个
webservice1.php,作用是直接返回服务端数据库的数据,如下:
- <?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调用:
- 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();
相关推荐
卖口粥湛蓝的天空 2020-09-15
stulen 2020-09-15
zyyjay 2020-11-09
xuebingnan 2020-11-05
samtrue 2020-11-22
stefan0 2020-11-22
yifangs 2020-10-13
songshijiazuaa 2020-09-24
hebiwtc 2020-09-18
天步 2020-09-17
83911535 2020-11-13
whatsyourname 2020-11-13
zhouyuqi 2020-11-10
Noneyes 2020-11-10
mathchao 2020-10-28
王志龙 2020-10-28