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

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

加点数据,然后在服务端建立一个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',$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端发送的数据保存到服务端了。

Android访问php webservice相关推荐

  1. 利用json+webservice实现android访问远程数据库,利用JSON+WebService实现Android访问远程数据库...

    2013年第9期SCIENCE&TECHNOLOGYINFORMATION ○IT论坛○科技信息 利用JSON+WebService实现Android访问远程数据库 黄淑静1杨红梅2 (1.山 ...

  2. android访问WebService(axis)

    我自己发布的webService就是不能被android访问,后面从网上查了下,我自己的webservice是用apache cxf发布的,不能访问.后面改成axis发布后就能访问了.具体原因不明确, ...

  3. Android访问中央气象台的天气预报API得到天气数据

    在用Android获取天气预报数据时,大家一定会首先想到Google的天气预报API,其实除了Google的天气预报API,免费的天气预报接口还有http://www.webservicex.net/ ...

  4. 在Android中使用Android Ksoap2调用WebService

    一.WebService介绍 WebService是基于SOAP协议可实现web服务器与web服务器之间的通信,因采用SOAP协议传送XML数据具有平台无关性,也是成为解决异构平台之间通信的重要解决方 ...

  5. Android访问WCF服务(使用json实现参数传递)

    经过多日努力, 终于勉强弄明白了Android访问WCF服务的方法. 服务端实现 一, 实现服务. 操作契约 [csharp] view plaincopy [ServiceContract] pub ...

  6. Android访问网络系列之--访问图片

    今天闲着无聊,顺便做了个android 访问网络图片的demo,希望与大家分享下: 下面是主要代码: 1.main.xml <?xml version="1.0" encod ...

  7. android调用.Net WebService传递byte[]

    android调用.Net WebService传递byte[] android端代码: SoapObject request = new SoapObject(Constant.NAMESPACE, ...

  8. android之调用webservice实现图片上传

    http://www.cnblogs.com/top5/archive/2012/02/16/2354517.html 最近boss要求做android客户端的图片上传和下载,就是调用服务器的webs ...

  9. 我的Android进阶之旅------Android通过调用Webservice实现天气预报

    通过这一篇文章WebService的读书笔记对Web Service的认识,现在来写一个小应用Android通过调用Webservice实现天气预报来加强对Web Srevice的学习 在开发天气预报 ...

最新文章

  1. expect脚本的简单应用
  2. 为了支持AOP的编程模式,我为.NET Core写了一个轻量级的Interception框架[开源]
  3. 缓冲区溢出漏洞攻击之用户登录
  4. Hi3520D UART2和UART3是如何加载到内核的
  5. php width,PHP imagefontwidth()用法及代码示例
  6. 5G的来龙去脉及未来
  7. gulp压缩css文件夹,使用 gulp 压缩 CSS
  8. 使用WIM格式进行WES 7 (windows embedded standard )的安装
  9. Cygwin-安装和配置ssh服务
  10. 平安银行软件测试难么,中国平安银行关于软件测试笔试试题(一)
  11. android hci设备,android-hci相关操作
  12. linux认证加k8s认证,如何快速验证您的Kubernetes配置文件?
  13. [4G5G专题-62]:架构 - 开放的网络自动化平台ONAP(Open Network Automation Platform)
  14. 俞敏洪老师谈英语单词记忆方法——转
  15. win8.1服务器系统安装教程,win8.1安装iis图文教程
  16. WinDbg命令详解--执行
  17. 文件下载被浏览器默认打开解决方法
  18. 【MindInsight】在win下安装MindInsight遇到“ No module named apos;fcntlapos;“问题
  19. ξσ Dicky's GuestBook σξ
  20. arcsinx用计算机怎么算,arcsinx求导(arcsinx如何计算)

热门文章

  1. 美丽的数学家:如果您讨厌数学,这些其实都是人生故事
  2. POJ 3624 Charm Bracelet 0-1背包
  3. windbg学习----r?
  4. 下拉菜单(含有阻止事件冒泡)
  5. jquery获取input值
  6. C# 线程的各种知识,和使用方法
  7. dataGrid点击显示数据到textBox
  8. 基于Tomcat的JSP开发过程中的中文乱码问题解决
  9. 一个人的战斗---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十九)[转]...
  10. 诗和远方:无题(五十二)- 写给认识的一个老姐的两只猫