突然想到这样一个功能,用户使用某客户端登陆的时候,客户端做了以下两件事,一个是跳转页面,返回个人信息;第二个是将信息返回到服务器,服务器将数据保存在数据库中。这样一来用户的个人信息也就获取到了!

事不宜迟赶快实现吧!

正好我的SAE云豆还没有消耗完,我就打算用PHP做后台!

客户端与服务端传送现在比较流行传递Json字符串!(还好之前了解过Json),android将数据包装成Json格式,然后通过Httpclient发送给PHP后台,php根据属性名得到Json字符串,然后做出解析,最后保存(MySQL)流程就是这样。

第一步:Android客户端封装Json格式数据

首先把你想要传送的数据封装成Json格式的数据,可以使用Json包或者Gson,我用的是Gson,我想要传送的是User对象,代码如下:

<span style="font-family:Microsoft YaHei;font-size:14px;">Gson gson = new Gson();gson.toJson(user))</span>
转换格式非常简单,不做太多介绍

第二步:在登录返回线程中写个异步方法(当然了,你想在任何时候调用异步都行,我就放在返回登录信息的时候触发异步任务),异步任务里调用Httpclient发送请求的方法,代码如下:

<span style="font-family:Microsoft YaHei;font-size:14px;">/** *  * 描述 向后台发送user数据 * @param user */<span style="font-family:Times New Roman;">public static void SaveDataToPhp(User user){Gson gson = new Gson();String url = "http://bmhjqs.sinaapp.com/ChzuAppDate/chzu_user_save.php";  HttpPost httpRequest = new HttpPost(url);  List<NameValuePair> params = new ArrayList<NameValuePair>();  params.add(new BasicNameValuePair("userJson", gson.toJson(user)));  try {  HttpEntity httpEntity = new UrlEncodedFormEntity(params,"utf-8");  httpRequest.setEntity(httpEntity);  HttpClient httpClient = new DefaultHttpClient();  HttpResponse httpResponse = httpClient.execute(httpRequest);  if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){  String result = EntityUtils.toString(httpResponse.getEntity());  Log.i("save", result);}else{  }  } catch (UnsupportedEncodingException e) {  e.printStackTrace();  } catch (ClientProtocolException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  }  }</span></span>
此时,数据开始发送到PHP了

第三步:接收Json数据

在php中,通过参数Key来获取Value,代码如下:

<span style="font-family:Microsoft YaHei;font-size:14px;">//接受客户端传来的json数据<span style="font-family:Times New Roman;">$json_string = $_POST ["userJson"];$user = json_decode ( $json_user );if (ini_get ( "magic_quotes_gpc" ) == "1") {$json_string = stripslashes ( $json_string );}</span>$user = json_decode ( $json_string, true );//必须加参数‘true’,否则PHP不认为$user是个数组</span>
需要注意的写在注释里了,到此,就可以通过array[key]的方法来获取值了;

第四步:保存数据

我将数据保存在SAE下的Mysql数据库,代码如下:

<span style="font-family:Microsoft YaHei;font-size:14px;">// 开始保存到数据库<span style="font-family:Times New Roman;">$link = mysql_connect ( SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT, SAE_MYSQL_USER, SAE_MYSQL_PASS );if ($link) {mysql_select_db ( SAE_MYSQL_DB, $link );//根据ID判断数据库里是否存在$isExit = "查询语句";$result = mysql_query($isExit);if(mysql_num_rows($result) < 1){$sql = "插入语句...";mysql_query ( 'set names utf-8' );mysql_query ( $sql );echo 'STATE_OK';}else{echo 'STATE_EXIST';}mysql_close ( $link );} else {echo 'STATE_DB_FAIL';}</span></span>
第五步:测试


测试成功,数据可以正常的保存!





如果客观感觉有用的话,点个赞。。。我会更加的努力

如果有不对的地方还请指出,我会改正!

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. Android无线调试――抛开USB数据线
  3. Android(安卓)面试必备 - http 与 https 协议
  4. MIUI评测:iOS身,Android心
  5. Android中进程间通信(IPC)方式总结
  6. Android(安卓)断点续传,手写多线程下载文件、数据库存储进度
  7. Android(安卓)API Guides---Text and Input
  8. 开发者大杀器 —— Battery Historian,刨根问底,揪出 Android(安卓
  9. 手把手教你实现Android(安卓)RecyclerView上拉加载功能

随机推荐

  1. 学习到的有关android的知识点 单元测试等
  2. Android 解决多个通知发生冲突的问题
  3. QT开始支持andriod和ios
  4. Android 实现Toast的快速切换刷新
  5. Android自定义dialog弹出布局
  6. Android Sqlite数据库查询操作使用 '%?%'
  7. Android Inflate
  8. Android Audio代码分析19 - setPosition
  9. Android设置Button保持Press的状态
  10. android -- 小功能 解决自动旋转导致acti