php实现post请求 接收android客户端json数据 存储数据库 并返回json
16lz
2022-06-21
php实现post请求 接收android客户端json数据 存储数据库 并返回json
大纲
实现php端存储数据库类
实现php端接收post请求
实现php端返回json数据
实现android 客户端 jsonbean
实现android 客户端 http请求线程类
Linux服务器检查mysql数据库 ,数据是否正常插入
php后台
-实现php端存储数据库类
<?phpclass VideoClear{ /** * 检验ID 并存储数据库 操作 * * $id 客户端传来的 id * **/ public static function checkId($id){ //链接数据库 $con = mysql_connect("localhost","root","new-password"); //选择数据库 mysql_select_db("my_db",$con); //检验Id是否存在 $result = mysql_query("select * from recordClear where recordId=".$id.""); $num = mysql_num_rows($result); //获取星期 $time2 = date("N",time()); if($time2==2){//每周一开始清理 if($num){//数据存在 则 对次数增加 mysql_query("update recordClear set recordCount=recordCount+1 where recordId=".$id);//对数据自增 }else{//数据不存在 则建立新数据 $sql = "INSERT INTO recordClear(recordId,recordCount,cleardate) VALUES(".$id.",'1',".$time2.")"; $query = mysql_query($sql); } return "off".$id.mysql_error(); }else{ return "on"; } mysql_close($con); }}?>
-实现php端接收post请求
<?php $json = file_get_contents("php://input"); $data = json_decode($json, true); require_once('./Response1.php'); Response1::json($data['id']);?>
-实现php端返回json数据
<?phpclass Response1{ /** * * * * $codelangdao 朗道版本信息 返回的提示码 * $codezirui 子瑞版本信息 返回的提示码 * $message 返回的提示信息 * $data 返回的信息 */ public static function json($id,$data){ require_once('./VideoClear.php'); $tag = VideoClear::checkId($id); $result = array( 'clear_tag'=>"off", 'whether_clear'=>$tag, ); echo json_encode($result,128); exit; }}?>
接下来是android客户端
-实现android 客户端 jsonbean
直接从php代码复制参数 保证书写不出错
/** * Created by Administrator on 2016/6/14. * author 王浩 * qq 1520777821 * 转载请注明 */public class VideoClearBean { public String clear_tag; public String whether_clear;}
-实现android 客户端 http请求线程类
/** * Created by Administrator on 2016/6/14. * author 王浩 * qq 1520777821 * 转载请注明 */public class UpdataThread extends Thread implements Runnable { public UpdataThread(){ } @Override public void run() { super.run(); executeClear(); } public void executeClear() { InputStream inputStream = null; HttpURLConnection urlConnection = null; try { URL url = new URL("http://191.101.237.106/test1.php"); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); urlConnection.setRequestProperty("Accept", "application/json"); urlConnection.setRequestMethod("POST"); urlConnection.setDoOutput(true); DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream()); //配置 json Gson gson = new Gson(); RequestBean json = new RequestBean(); json.id = "15"; json.verName = "1.41"; String jsonString = gson.toJson(json); Log.e("TAA", "TEST: 发出去的数据" + jsonString); wr.writeBytes(jsonString); wr.flush(); wr.close(); // try to get response int statusCode = urlConnection.getResponseCode(); if (statusCode == 200) { inputStream = new BufferedInputStream(urlConnection.getInputStream()); String str = VerUtils.inputStream2String(inputStream); Log.e("TAA", "TEST:" + str); VideoClearBean verBean = gson.fromJson(str, VideoClearBean.class); Log.e("TAA", "TEST Bean::" + verBean.toString()); } } catch (Exception e) { } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (urlConnection != null) { urlConnection.disconnect(); } } }}
-Linux服务器检查mysql数据库 ,数据是否正常插入
我们用 id 15检测下 客户端运行代码
然后查询Linux查询mysql
Last login: Tue Jun 14 07:05:05 2016 from 115.195.22.120[root@guhaotechnology ~]# mysql -uroot -pnew-passwordWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 16Server version: 5.1.73 Source distributionCopyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || my_db || mysql || test |+--------------------+4 rows in set (0.00 sec)mysql> use my_db;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables; +-----------------+| Tables_in_my_db |+-----------------+| recordClear |+-----------------+1 row in set (0.00 sec)mysql> select * from recordClear;+----------+-------------+------------+| recordId | recordCount | cleardate |+----------+-------------+------------+| 1 | 4 | NULL || 1 | 4 | NULL || 5 | 656 | NULL || 6 | 1 | 1465878458 || 7 | 1 | 1465878564 || 8 | 1 | 2 || 9 | 1 | 2 || 11 | 3 | 2 || 15 | 1 | 2 |+----------+-------------+------------+9 rows in set (0.00 sec)
很明显我们成功了 15的数据已经插入进去了
假如测试时你的服务器爆出了这样的错误
重启服务器即可 这是mysql的bug
Warning: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO) in /var/www/html/VideoClear.php on line 34 Warning: mysql_query(): A link to the server could not be established in /var/www/html/VideoClear.php on line 34
接下来再看下客户端的log
06-14 19:03:30.894 29719-29749/com.qq.e.union.demo E/TAA: TEST: 发出去的数据{"id":"15","verName":"1.41"}06-14 19:03:31.065 29719-29749/com.qq.e.union.demo E/TAA: TEST:{"clear_tag":"off","whether_clear":"off15"}06-14 19:03:31.071 29719-29749/com.qq.e.union.demo E/TAA: TEST Bean::com.qq.e.union.demo.VideoClearBean@baa7a3
**以上就是和大家分享的
转载请注明 浩宇国香 博主原创
想看更多的来 楼主的博客平台
很多私货哦
http://www.guhaotechnology.com**
更多相关文章
- Android(安卓)HAL实现的三种方式(3) - 基于Manager的HAL设计
- Android(安卓)自定义AlertDialog提交表单
- Android开发中Handler的经典总结
- Android(安卓)NFC开发(二)——Android世界里的NFC所具备的条件以及
- 13-5-16 Android自定义空间实现wifi信号强度
- Android中用Application类实现全局数据变量的使用
- 浅谈Java中Collections.sort对List排序的两种方法
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- python起点网月票榜字体反爬案例