php - 使用php从mysql获取数据到android

标签 php android mysql json httpclient

我目前正在尝试开发一个应用程序,除其他外,它可以从 mysql 服务器发送和接收数据。

该应用程序调用一个 php 脚本,该脚本与 mysql 服务器建立连接。我已经成功开发了发送部分,现在我想从mysql中检索数据并将其显示在android手机上。

mysql 表由 5 列组成:

  • bssid
  • 构建
  • 地板
  • lon
  • 纬度

php 文件 getdata.php 包含:

     <?php
     $con = mysql_connect("localhost","root","xxx");
     if(!$con)
     {
        echo 'Not connected';
        echo ' - ';

     }else
     {
     echo 'Connection Established';
     echo ' - ';
     }

     $db = mysql_select_db("android");
     if(!$db)
     {
        echo 'No database selected';
     }else
     {
        echo 'Database selected';
     }
     $sql = mysql_query("SELECT building,floor,lon,lat FROM ap_location WHERE bssid='00:19:07:8e:f7:b0'");

     while($row=mysql_fetch_assoc($sql))
     $output[]=$row;
     print(json_encode($output));

      mysql_close(); ?>

这部分在浏览器中测试时工作正常。

连接php的java代码:

    public class Database {
        public static Object[] getData(){
    String db_url = "http://xx.xx.xx.xx/getdata.php";
    InputStream is = null;
    String line = null;
    ArrayList<NameValuePair> request = new ArrayList<NameValuePair>();
    request.add(new BasicNameValuePair("bssid",bssid));
    Object returnValue[] = new Object[4];
    try
    {
        HttpClient httpclient = new DefaultHttpClient();
        HttpContext localContext = new BasicHttpContext();
        HttpPost httppost = new HttpPost(db_url);
        httppost.setEntity(new UrlEncodedFormEntity(request));
        HttpResponse response = httpclient.execute(httppost, localContext);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
    }catch(Exception e){
        Log.e("log_tag", "Error in http connection" +e.toString());
    }
    String result = "";
    try
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
        StringBuilder sb = new StringBuilder();

        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        result=sb.toString();
    }catch(Exception e){
        Log.e("log_tag", "Error in http connection" +e.toString());
    }
    try
    {
        JSONArray jArray = new JSONArray(result);
        JSONObject json_data = jArray.getJSONObject(0);
        returnValue[0] = (json_data.getString("building"));
        returnValue[1] = (json_data.getString("floor"));
        returnValue[2] = (json_data.getString("lon"));
        returnValue[3] = (json_data.getString("lat"));

    }catch(JSONException e){
        Log.e("log_tag", "Error parsing data" +e.toString());
    }
    return returnValue;
}

这是修改后的代码,用于向mysql服务器发送数据,但是有问题。 我试图通过在代码中设置不同的 returnValue 来测试它,这表明带有 httpclient 连接的部分没有运行。

你们能帮帮我吗?

我希望这不会太令人困惑,如果您愿意,我可以尝试进一步解释。

最佳答案

使用 HttpGet 而不是 HttpPost 并解析您的 url。

关于php - 使用php从mysql获取数据到android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8545325/

相关文章:

php - MySQL Union 全部结合 MySQL Inner Join

java - 如何在 Java 而不是 XML 中以编程方式设置 View 的重力和布局重力?

php - 使用 JSON 将 mysql 数据加载到 Highcharts 折线图

mysql - MySQL 适合这个吗?

升级mysql版本后mysql无法运行

PHP MySql 用户推荐跟踪

php - 呈现面向公众的错误页面

php - 输入题 mysql php html

java - 下载 getcontentlength() 在 Android 中返回 -1

android - 如何获得以前的 fragment ?