android客户端与php服务器的json数据简单交互(一)


本文是阐述android客户端与php服务器简单的交互。重点在于采用json数据格式的方式进行传递数据,为基础文章。


首先是android客户端。这里因为涉及到网络通信,所以我们需要采用http的通信协议与服务器交互,因为这里的数据

涉及到一些密码之类的,所以我们采用POST方式。另外注意一点的是,我们获取通信过程最好不要在主线程中进行,最

好是另外开辟一个线程进行获取数据的工作,这样假如获取数据失败之后程序仍然可以运行。


下面是客户端的部分代码,我将获取数据的部分代码写成了一个函数,如果返回值为true的话则成功从服务器获得数据。这个函数如在实际代码

中应用应该在一个线程中调用。

         
	 private  boolean getJson()
          {
                    boolean result = false;
                    
                    
                    HttpClient httpClient = new DefaultHttpClient();
                    
                    //这里是你与服务器交互的地址
                    String validateUrl = "http://192.168.191.1/YCM/testjson.php";
                    
                    //设置链接超时
                    httpClient.getParams().setParameter(CoreConnectionPNames.
                                        CONNECTION_TIMEOUT, 5000);
                    
                    //设置读取超时
                    httpClient.getParams().setParameter(
                                        CoreConnectionPNames.SO_TIMEOUT, 5000);
                    
                    HttpPost httpRequst = new HttpPost(validateUrl);
                    
                    //准备传输的数据
                    List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
                    
                    
                    params.add(new BasicNameValuePair("user", "lewis"));
                    params.add(new BasicNameValuePair("password", "123"));
                    
                    try
                    {
                              //发送请求
                              httpRequst.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
                              
                              //得到响应
                              HttpResponse response = httpClient.execute(httpRequst);
                              
                              
                              //返回值如果为200的话则证明成功的得到了数据
                              if(response.getStatusLine().getStatusCode() == 200)
                              {
                                        StringBuilder builder = new StringBuilder();
                                        
                                        //将得到的数据进行解析
                                        BufferedReader buffer = new BufferedReader(
                                                            new InputStreamReader(response.getEntity().getContent()));
                                        
                                        for(String s =buffer.readLine(); s!= null; s = buffer.readLine())
                                        {
                                                  builder.append(s);
                                                  
                                        }
                                        
                                        System.out.println(builder.toString());
                                        //得到Json对象
                                        JSONObject jsonObject   = new JSONObject(builder.toString());
                                        
                                        //通过得到键值对的方式得到值
                                       id = jsonObject.getInt("user_id");
                                       userName = jsonObject.getString("user_name");
                                       password = jsonObject.getString("password");
                                       
                                       //在线程中判断是否得到成功从服务器得到数据
                                       result = true;
                                        
                              }
                              
                    } catch (Exception e)
                    {
                              e.printStackTrace();
                    }
                    
                    return result;
                    
          }
          





接着就是服务器部分的代码了,本来是应该与Mysql数据库进行交互的,但是这里的重点是json数据的交互,所以我们就假设得到了数据库中的数据进行测试。


<?php
	
	
	//这里应该是是从Mysql数据库中得到相应的数据,
	//这里仅仅是模拟过程,不再写相应的数据库交互代码
	$username = str_replace(" ", "", $_POST['user']);
	$password = str_replace(" ", "", $_POST['password']);
	$id = 1;

	//将数据存储到数据中
	$arr = array(
		'user_id' => $id,
		'user_name'=>$username,
		'password' =>$password
		);

	//将数组转成json格式进行传递
	$strr = json_encode($arr);

	echo($strr);



?>


注意一点的是,因为采用json传输数据叫传统的xml传输数据更加简便和快捷,所消耗的资源也更小,小型项目采用json格式传输数据越来越常见

则自PHP5.2之后设计者就将json数据格式整合到了php中,与数组之间的转换非常方便(众所周知php数组也是非常方便的)。


如是将数组转成json,则采用用方法 json_encode(),  如将json转成php数组则直接用 json_decode()   //就是转码和解码嘛~

这也仅仅是json用法的最简单的部分,其他用法以后再介绍~


If there is any mistake in the article, please feel free to point it out! I would be really appreciate.












  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值