php实现post请求 接收android客户端json数据 存储数据库 并返回json
大纲
实现php端存储数据库类
实现php端接收post请求
实现php端返回json数据
实现android 客户端 jsonbean
实现android 客户端 http请求线程类
Linux服务器检查mysql数据库 ,数据是否正常插入
php后台
-实现php端存储数据库类
<?php
class 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数据
<?php
class 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-password
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
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 names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> 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**