【问题标题】:Inserting Data to Mysql Server as json String - No Data uploading将数据作为 json 字符串插入 Mysql 服务器 - 无数据上传
【发布时间】:2018-03-13 12:53:30
【问题描述】:

参考堆栈上的各种示例,我编写了以下代码以将数据发送到 MySQL 服务器表,但那里没有上传任何内容。这是我的 Android 方法的代码。

 public void sendtoserver(final String data) {
        Log.e("LWFAB", "Sending Data to Server");
        //Send data to server now
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL bulkdataurl = new URL("http://myphp.php?");
                    HttpURLConnection bulkcon = (HttpURLConnection) bulkdataurl.openConnection();
                    bulkcon.setConnectTimeout(15000);
                    bulkcon.setReadTimeout(15000);
                    bulkcon.setRequestMethod("POST");
                    bulkcon.setDoOutput(true);
                    BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(bulkcon.getOutputStream());
                    BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(bufferedOutputStream));
                    bufferedWriter.write(data);
                    bufferedWriter.flush();
                    bufferedWriter.close();
                    bufferedOutputStream.close();
                    bulkcon.connect();
                    //OutputStreamWriter outputStreamWriter = new OutputStreamWriter(bulkcon.getOutputStream());
                    //outputStreamWriter.write(data);
                    //outputStreamWriter.flush();

                    //Get Server Response
                    BufferedReader bufferedReader;
                    bufferedReader = new BufferedReader(new InputStreamReader(bulkcon.getInputStream()));
                    StringBuilder stringBuilder = new StringBuilder();
                    String line = null;

                    while ((line = bufferedReader.readLine()) != null) {
                        stringBuilder.append(line + "\n");
                    }
                    System.out.println(stringBuilder.toString());
                    bufferedReader.close();

                    System.out.println("Sending Bulk Data " + bulkcon);


                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();

    }
}

我没有收到任何错误。下面是我的php代码

<?php
require_once("../dbconnect.php"); 

$json = file_get_contents('php://input');
$obj = json_decode($json, true);
error_log(print_r($obj, true));
$array_data = $obj["data"];
print_r($obj["data"]);


foreach ($array_data as $row) {
    print_r($row);
    $sql = "INSERT INTO test (vid, name,branch,date,time) VALUES ('" . $row["vid"] . "', '" . $row["name"] . "','".$row["branch"]."','".$row["date"]."','".$row["time"]."')";

    echo "$sql<br>";
    $conn->query($sql);
}

$conn->close();
?>

作为字符串发送的数据示例如下:

{"data":[{"vid":"1","name":"raj","branch":"mech","date":"2-Sep-2017","time":"13:03:24 PM"}]}

如果有什么要解决的,你能指导一下吗?

【问题讨论】:

标签: java php android mysql


【解决方案1】:

您正在使用cursor.getInt(1),它将从光标返回一个整数。您需要使用 cursor.getString() 来获取字符串并将它们正确放入 JSON 中。

这是一个小例子:

jsonObject.put("vid", curser.getString(cursor.getColumnIndex("vid")));

【讨论】:

  • 现在得到正确的 json 格式,仍然没有数据上传?还有什么,ps指南。
  • 1- 检查网址。是公开的吗?可访问? 2-检查连接到数据库尝试添加类似这样的内容以确保您已连接: $con = mysql_connect('localhost','root','123456') 或 die('Cannot connect to the DB'); 3-尝试添加一些标题 URLConnection.setRequestProperty("Content-Type", "application/json"); 4- 在服务器上回显某些内容以查看您是否收到请求:echo json_encode($json));
  • 很高兴为您提供帮助 :)。
猜你喜欢
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-19
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多