java - 将数据作为 json 字符串插入 Mysql 服务器 - 无数据上传

标签 java php android mysql

引用堆栈上的各种示例,我编写了以下代码将数据发送到 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"}]}

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

最佳答案

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

这是一个小例子:

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

关于java - 将数据作为 json 字符串插入 Mysql 服务器 - 无数据上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46525726/

相关文章:

java - 如何使用 Java 屏蔽十六进制 int?

java - 如何在 JEditorPane 中找到光标所指向的标签

php - 在数组中查找最后一个非零值

php - JavaScript 启用按钮在 php 中不起作用

android - Kotlin Compose 全局页脚 View

java - JAX-B 的多种配置

java - 在java中添加更多标签

php - Laravel LiveWire 2 : Do we have to make a new class or we can do like traditional Controller

android - 如何在android中使linearLayout部分透明?

java - IllegalStateException : getInputStream() is not available. 这是可重入调用吗?