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

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


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

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

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


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

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

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <pre code_snippet_id="305185" snippet_file_name="blog_20140421_1_7537690" name="code" class="java">         </pre><pre code_snippet_id="305185" snippet_file_name="blog_20140421_1_7537690" name="code" class="java"><span style="white-space:pre">    </span> private  boolean getJson()  
  2.           {  
  3.                     boolean result = false;  
  4.                       
  5.                       
  6.                     HttpClient httpClient = new DefaultHttpClient();  
  7.                       
  8.                     //这里是你与服务器交互的地址  
  9.                     String validateUrl = "http://192.168.191.1/YCM/testjson.php";  
  10.                       
  11.                     //设置链接超时  
  12.                     httpClient.getParams().setParameter(CoreConnectionPNames.  
  13.                                         CONNECTION_TIMEOUT, 5000);  
  14.                       
  15.                     //设置读取超时  
  16.                     httpClient.getParams().setParameter(  
  17.                                         CoreConnectionPNames.SO_TIMEOUT, 5000);  
  18.                       
  19.                     HttpPost httpRequst = new HttpPost(validateUrl);  
  20.                       
  21.                     //准备传输的数据  
  22.                     List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();  
  23.                       
  24.                       
  25.                     params.add(new BasicNameValuePair("user", "lewis"));  
  26.                     params.add(new BasicNameValuePair("password", "123"));  
  27.                       
  28.                     try  
  29.                     {  
  30.                               //发送请求  
  31.                               httpRequst.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));  
  32.                                 
  33.                               //得到响应  
  34.                               HttpResponse response = httpClient.execute(httpRequst);  
  35.                                 
  36.                                 
  37.                               //返回值如果为200的话则证明成功的得到了数据  
  38.                               if(response.getStatusLine().getStatusCode() == 200)  
  39.                               {  
  40.                                         StringBuilder builder = new StringBuilder();  
  41.                                           
  42.                                         //将得到的数据进行解析  
  43.                                         BufferedReader buffer = new BufferedReader(  
  44.                                                             new InputStreamReader(response.getEntity().getContent()));  
  45.                                           
  46.                                         for(String s =buffer.readLine(); s!= null; s = buffer.readLine())  
  47.                                         {  
  48.                                                   builder.append(s);  
  49.                                                     
  50.                                         }  
  51.                                           
  52.                                         System.out.println(builder.toString());  
  53.                                         //得到Json对象  
  54.                                         JSONObject jsonObject   = new JSONObject(builder.toString());  
  55.                                           
  56.                                         //通过得到键值对的方式得到值  
  57.                                        id = jsonObject.getInt("user_id");  
  58.                                        userName = jsonObject.getString("user_name");  
  59.                                        password = jsonObject.getString("password");  
  60.                                          
  61.                                        //在线程中判断是否得到成功从服务器得到数据  
  62.                                        result = true;  
  63.                                           
  64.                               }  
  65.                                 
  66.                     } catch (Exception e)  
  67.                     {  
  68.                               e.printStackTrace();  
  69.                     }  
  70.                       
  71.                     return result;  
  72.                       
  73.           }  
  74.           </pre><br>  
  75. <br>  
  76. <pre></pre>  
  77. <pre></pre>  

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


[php]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?php  
  2.       
  3.       
  4.     //这里应该是是从Mysql数据库中得到相应的数据,  
  5.     //这里仅仅是模拟过程,不再写相应的数据库交互代码  
  6.     $username = str_replace(" """$_POST['user']);  
  7.     $password = str_replace(" """$_POST['password']);  
  8.     $id = 1;  
  9.   
  10.     //将数据存储到数据中  
  11.     $arr = array(  
  12.         'user_id' => $id,  
  13.         'user_name'=>$username,  
  14.         'password' =>$password  
  15.         );  
  16.   
  17.     //将数组转成json格式进行传递  
  18.     $strr = json_encode($arr);  
  19.   
  20.     echo($strr);  
  21.   
  22.   
  23.   
  24. ?>  


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

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


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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值