douliao7354
2015-07-06 11:35
采纳率: 0%
浏览 665

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 文件中发送了错误的密码,现在一切正常。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • doudi4137 2015-07-06 11:58

    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+)

    点赞 评论
  • duan2477 2015-07-06 12:50

    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.

    点赞 评论

相关推荐 更多相似问题