牛骨文教育服务平台(让学习变的简单)
博文笔记

php实现post请求 接收android客户端json数据 存储数据库 并返回json

创建时间:2016-06-14 投稿人: 浏览次数:5917

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**

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。