android访问php webservice简单一例
2013-02-20 22:33
447 查看
博客分类:
Android jsonhttpclientandroid
如果是PHP做的服务端,要用android去访问,如何办?当然可以用REST,但也可以用点
笨的方法,比如PHP的服务端可以用JSON和XML提供返回的数据,而android端则可以用
APACHE的httpclient去访问.
下面是一个例子,假设数据表中users表有如下字段(mysql):
idusers,UserName,FullName,加点数据.然后在服务端PHP,建立一个
webservice1.php,作用是直接返回服务端数据库的数据,如下:
Java代码
<?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调用:
Java代码
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数据保存
Java代码
<?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
Java代码
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 jsonhttpclientandroid
如果是PHP做的服务端,要用android去访问,如何办?当然可以用REST,但也可以用点
笨的方法,比如PHP的服务端可以用JSON和XML提供返回的数据,而android端则可以用
APACHE的httpclient去访问.
下面是一个例子,假设数据表中users表有如下字段(mysql):
idusers,UserName,FullName,加点数据.然后在服务端PHP,建立一个
webservice1.php,作用是直接返回服务端数据库的数据,如下:
Java代码
<?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>';
}
}
?>
<?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调用:
Java代码
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();
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数据保存
Java代码
<?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));
?>
<?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
Java代码
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();
}
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简单一例
- android访问php webservice简单一例
- android访问php webservice简单一例(转)
- android访问php webservice简单一例
- android访问php webservice简单一例
- android json访问php webservice
- Android访问php webservice-用json等方式。
- Android访问php webservice
- Android访问网络的常用方式:Handler、AsyncTask简单例子(服务器端+Android端)
- android 和 php 简单的数据交互
- android采用Ksoap2访问webservice,AndroidHttpTransport call方法异常
- Android调用天气预报的WebService简单例子
- 在Android中访问WebService接口的方法
- 分享php中四种webservice实现的简单架构方法及实例
- Android访问webservice
- android访问webservice设置timeout
- Android 网络访问框架retrofit2,okhttp3之简单封装,kotlin源码
- php——SoapClient访问webservice
- android访问webService
- android 和 php 简单的数据交互