Android访问php webservice-用json等方式。

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

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

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

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

 

则可以把数据表输出为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);
HttpPost httppost =  new  HttpPost(url);
 
try  {
Log.i(getClass().getSimpleName(),  "send task - start" );
 
List nameValuePairs =  new  ArrayList( 2 );
nameValuePairs.add( new  BasicNameValuePair( "user" ,  "1" ));
httppost.setEntity( new  UrlEncodedFormEntity(nameValuePairs));
ResponseHandler responseHandler =  new  BasicResponseHandler();
String responseBody = httpclient.execute(httppost, responseHandler);
// 解析JSON返回的 JSONObject json = new JSONObject(responseBody);
JSONArray jArray = json.getJSONArray( "posts" );
ArrayList> mylist =  new  ArrayList>();
 
for  ( int  i =  0 ; i < jArray.length(); i++) {
HashMap map =  new  HashMap();
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数据。

 

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

转载于:https://www.cnblogs.com/FanTasYX/archive/2013/03/19/2968833.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值