2014-01-28 3 views
1

У меня есть два вопроса о соединении между Android и PHP/MySQL.Как подключить мое приложение для Android к моему серверу PHP/MySQL?

  1. Если я использовал версию 3 и выше, это правда, что мне нужно сделать соединение в фоновом режиме, используя отдельный поток?

  2. Нужно ли использовать JSON для ответа?

Я написал код без использования многопоточности и JSON, но работает только с версией 2.3 и выше. Я пробовал на 4.0 и 4.2, но он не ответил.

+2

android не может разговаривать с mysql, и вы тоже этого не хотите - ваша база данных никогда не должна подвергаться прямой публичной сети. Android должен поговорить с PHP, а php поговорит с mysql. –

+0

yess Я знаю это, но как насчет использования потока и класса json? – user3006788

+0

Да, вам нужно использовать AsyncTask (Thread), иначе вы получите свойство NetworkOnMainThreadException. Посмотрите, есть ли там множество ссылок –

ответ

6

Ваш первый вопрос:

Да. Всегда выполнять сетевые задачи или что-либо еще, что требует времени в фоновом режиме. Лучший способ сделать это - использовать AsyncTask. This article объясняет AsyncTask путь лучше, чем я могу, пойдите, прочитайте его.

Вопреки тому, что говорят по вашему вопросу, причина, по которой вы должны использовать отдельный поток, заключается не в том, что в противном случае вы получите NetworkOnMainThreadException. Это потому, что это более эффективная практика, и потому что она гарантирует, что ваше приложение не заикается, пока оно выполняет сетевую задачу. Основная задача также обрабатывает анимации и т. Д. В вашем Activity, поэтому выполнение любой задачи в основном потоке для X-времени означает, что приложение заикается в течение X-времени.

Ваш второй вопрос:

Нет, не нужно использовать JSON. Вы хотите направить свои запросы через скрипт на своей веб-странице (будь то PHP, Ruby, Python, что угодно), а не напрямую взаимодействовать с вашей базой данных. Таким образом, вы можете ограничить действия, которые может выполнять ваше приложение, а также действия, которые может выполнить потенциальный хакер.

Как я уже сказал, нет необходимости использовать JSON. Тем не менее, это самый распространенный способ получить информацию с вашего сервера в вашем приложении по нескольким причинам. Наиболее распространены два существа:

  1. Низкие накладные расходы: JSON использует очень мало «лишние» символы между вашими данными, в отличие, например, XML, который имеет длинные метки, и так далее;
  2. Простота использования: У Android есть инструменты JSON, встроенные для вас, чтобы использовать их, что очень удобно для вас, чтобы работать с JSON. Например, возьмем этот бит JSON:

[{'id':11,'name':'Bob'},{'id':42,'name':'Sally'}]

Чтобы разобрать это в вашем Android приложение, вы можете сделать:

public List<Person> parseJson(String jsonString) { 

    // Initialize the ArrayList we're gonna store the people in 
    List<Person> people = new ArrayList<Person>(); 

    try { 
     // Convert the JSON from text (String) to a JSON Array, so we can 
     // more easily traverse it 
     JSONArray rootArray = new JSONArray(jsonString); 

     // loop through the prople in the JSON Array 
     for(int i=0; i<rootArray.length(); 

      // Get the object at position i from the JSON Array 
      JSONObject workingObj = rootArray.get(i); 

      // Do what you have to to store the data. In this example, 
      // I'm using a class called 'Person' which has setters for Id and Name 
      Person p = new Person(); 

      // Get all the info you need from the JSON Object. As you can see 
      // in the JSON snippet, we have an integer with key 'id' and a 
      // string with key 'name' 
      p.setId(workingObj.getInt("id")); 
      p.setName(workingObj.getString("name")); 

      // add the Person p to the ArrayList 
      people.add(p); 
     } 
    } catch (JSONException e) { 
     // properly handle all exceptions! 
    } 
    return people; 
} 

Как вы можете видеть, все синтаксический анализ делается для вас , и вам просто нужно приспособиться к структуре данных.

Смежные вопросы