Android Studio 将数据发送到 MySql 数据库的问题

我想从我的 android 应用程序中保存一些数据到服务器上的 mysql 数据库中。问题是一切看起来都很完美,我得到的信息是我的数据已经成功发送,但是我的数据库没有收到任何信息。我有以下文件:

main.java
  // setup a dialog window
        alertDialogBuilder.setCancelable(false)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {

                        // Drawing the marker in the Google Maps
                        drawMarker(point);
                        // Drawing the circle
                        drawCircle(point);
                        //Add proximity alert
                        addProximAlert(point);

                        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                        StrictMode.setThreadPolicy(policy);

                        InputStream is = null;

                        // add values to the database
                        String name = "" + editText1.getText();
                        String description = "" + editText2.getText();
                        String latitude = "" + Double.toString(point.latitude);
                        String longitude = "" + Double.toString(point.longitude);

                        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
                        nameValuePairs.add(new BasicNameValuePair("name", name));
                        nameValuePairs.add(new BasicNameValuePair("description", description));
                        nameValuePairs.add(new BasicNameValuePair("latitude", latitude));
                        nameValuePairs.add(new BasicNameValuePair("longitude", longitude));
                        nameValuePairs.add(new BasicNameValuePair("user","Someone"));

                        try {
                            HttpClient httpClient = new DefaultHttpClient();

                            HttpPost httpPost = new HttpPost("XXXXX/data2.php");
                            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                            HttpResponse response = httpClient.execute(httpPost);
                            HttpEntity entity = response.getEntity();
                            is = entity.getContent();
                            String msg = "Data has been sent successfully";
                            Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
                        } catch (ClientProtocolException e) {
                            Log.e("ClientProtocol", "Log_Tag");
                            e.printStackTrace();
                            String msg2 = "Log_Tag";
                            Toast.makeText(getApplicationContext(), msg2, Toast.LENGTH_LONG).show();
                        } catch (IOException e) {
                            Log.e("Log_Tag", "IOException");
                            e.printStackTrace();
                            String msg3 = "IOException";
                            Toast.makeText(getApplicationContext(), msg3, Toast.LENGTH_LONG).show();
                        }
                    }

                })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.cancel();
                            }
                        });

我的PHP文件如下:

<?php

function createNewProduct() {
        $response = array();
        $name=$_POST['name'];
        $description=$_POST['description'];
        $latitude=$_POST['latitude'];
        $longitude=$_POST['longitude'];
        $user=$_POST['user'];
        //$db = new DbConnect();

        $connection = mysqli_connect('localhost', 'XXXXXXXXX', 'XXXX','XXXX');

        $query = "INSERT INTO pois(name,description,lat,longit,created_by) VALUES('$name','$description','$latitude','$longitude','$user')";
        $result = mysqli_query($connection, $query) or die(mysql_error());
        if ($result) {
            $response["error"] = false;
            $response["message"] = "OK!";
        } else {
            $response["error"] = true;
            $response["message"] = "Failed!";
        }
       // echo json response
    echo json_encode($response);
}
createNewProduct();
?>

有什么解决办法吗?

更新:谢谢大家的帮助! 我发现了错误所在。这样说很可惜,但是我在我的 php 文件中发送了错误的密码,现在一切正常。

duannian3494
duannian3494 来自InputStream的第一个读取响应是,并查看它告诉的内容。
大约 5 年之前 回复
dpub33855
dpub33855 你从服务器得到什么回应?
大约 5 年之前 回复

2个回答



我会在php脚本中尝试一个echo响应,看看数据是否实际来到服务器。 然后你可以看到android是否发挥了它的作用,你可以将问题隔离到android或php代码。
另外,我建议使用Retrofit或者排序来进行这样的GET或POST请求。</ p>
</ div>

展开原文

原文

I would try an echo response in php script to see if data actually comes to server. Then you can see if android does its part and you can isolate problem to either android or php code. Also, I would suggest using Retrofit or volley for such GET or POST requests.



您可能想测试PHP,使用工具将数据发送到php(例如cURL),并检查 您的服务器首先按预期运行。</ p>

然后,检查您的android是否可以正确</ p>

  httpClient.execute(httpPost); 
< / code> </ pre>

在任何服务器上发布结果。</ p>

可能,Android禁用了HttpCliente API(如果是Android 22 +)</ p>
</ div>

展开原文

原文

You might want to test the PHP, use a tool to send the data to the php (like cURL for instance), and check that your server behaves as expected first.

Then, check that your android can correctly

httpClient.execute(httpPost);

on any server, and post the results.

Likely, the Android disabled the HttpCliente API (if Android 22+)

dpwqicw157673
dpwqicw157673 对不起,我错误地误解了这一点。 对您的要求有何回应? 没关系! 或者失败!,并且在您的服务器上,收到的请求是什么? 从wamp - > apache - > access log,您可以看到收到的请求。 发布你的问题
大约 5 年之前 回复
duanhuo0577
duanhuo0577 这不是打字错误。 这是正确的。 该对象在此行中声明:HttpPost httpPost = new HttpPost(“XXXXX / data2.php”);
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐