Получить данные из MySQL на Android с PHP - PullRequest
5 голосов
/ 17 декабря 2011

В настоящее время я пытаюсь разработать приложение, которое среди прочего может отправлять и получать данные с сервера mysql.

Приложение вызывает скрипт php, который устанавливает соединение с сервером mysql.Я успешно разработал отправляющую часть, и теперь я хочу получить данные из mysql и отобразить их на телефоне Android.

Таблица mysql состоит из 5 столбцов:

  • bssid
  • building
  • floor
  • lon
  • lat

Файл 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(); ?>

Эта часть работает нормально при тестировании в браузере.

Java-код для подключения к php:

    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 не работает.

Можете ли вы, ребята, помочь мне?

Надеюсь, это не слишком обнадеживает, и если вы хотите, я могу попытаться объяснить это дальше.

Ответы [ 2 ]

1 голос
/ 17 сентября 2014

Используйте HttpGet вместо HttpPost и проанализируйте ваш URL.

0 голосов
/ 19 декабря 2014

Вот класс, который я всегда использую, чтобы ПОЛУЧИТЬ

public JSONObject get(String urlString){       
    URL currentUrl;
    try {
        currentUrl = new URL(currentUrlString);
    } catch (MalformedURLException e) {
        e.printStackTrace();
        return null;
    }

    HttpURLConnection urlConnection = null;
    InputStream in;
    BufferedReader streamReader = null;
    StringBuilder responseStrBuilder = new StringBuilder();
    String inputStr;
    try {
        urlConnection = (HttpURLConnection) currentUrl.openConnection();            
        in = new BufferedInputStream(urlConnection.getInputStream());
        streamReader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
        while ((inputStr = streamReader.readLine()) != null) {
            responseStrBuilder.append(inputStr);
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        urlConnection.disconnect();
        if(null != streamReader){
            try {
                streamReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    try {
        return new JSONObject(responseStrBuilder.toString());
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;
}

Попробуйте проверить с помощью get("http://echo.jsontest.com/key/value");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...