Intereting Posts
Junit.framework.AssertionFailedError: Исключение в конструкторе: (java.lang.NoClassDefFoundError) Android – общий доступ к URL-адресу браузера Макет по умолчанию для ArrayAdapter Пользовательский агент Android HTTP Android RecyclerView, который находится во Фрагменте, который находится в ViewPager, не перезагружает / обновляет представления, если установлено setOffscreenPageLimit Настройки Android – в чем разница? Как запустить приложение с помощью инструментов ADB для Android? SIG33 при отладке собственного Android Конфигурация отладки для отладки продукта Как я могу уведомить текущую активность от широковещательного приемника? Scale Drawable – задает ли setImageLevel масштаб? Как исправить IncompatibleClassChangeError во время Android Jackson Parsing, используя аннотации в Android Lollipop? Передача активности Контекст для конструкторов для использования внутри – это плохо 1×1 Android Widget показывает как 2×2 виджет на экране WXGA720 SmoothScrollToPositionFromTop для Froyo ListView?

Как я могу получить данные с веб-сервера в приложении Android?

Я хочу получить данные с веб-сервера в приложении Android и не знаю с чего начать. Должен ли я использовать веб-службы?

Solutions Collecting From Web of "Как я могу получить данные с веб-сервера в приложении Android?"

Я бы порекомендовал эти обучающие программы:

Подключить Android к PHP и MySql , JSON в Android и PHP и MySQLi

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

Между ними они описывают каждый шаг в том, как делать то, что вы пытаетесь на каждом этапе, приложение Android, базу данных и веб-сервер, и содержит дополнительную информацию, которую вы можете сделать для обработки и использования полученной информации

Единственное, что я хотел бы добавить, это то, что Connect android с PHP и учебником MySql использует mysql_ в php, который устарел. Гораздо лучше использовать MySqli, поэтому я включил третью ссылку.

Основной план того, что вы хотите сделать, это:

1) в приложении android сделать запрос на php-скрипт сервера, используя такой класс:

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; public class JSONParser { // Response from the HTTP Request static InputStream httpResponseStream = null; // JSON Response String to create JSON Object static String jsonString = ""; // Method to issue HTTP request, parse JSON result and return JSON Object public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) { try { // get a Http client DefaultHttpClient httpClient = new DefaultHttpClient(); // If required HTTP method is POST if (method == "POST") { // Create a Http POST object HttpPost httpPost = new HttpPost(url); // Encode the passed parameters into the Http request httpPost.setEntity(new UrlEncodedFormEntity(params)); // Execute the request and fetch Http response HttpResponse httpResponse = httpClient.execute(httpPost); // Extract the result from the response HttpEntity httpEntity = httpResponse.getEntity(); // Open the result as an input stream for parsing httpResponseStream = httpEntity.getContent(); } // Else if it is GET else if (method == "GET") { // Format the parameters correctly for HTTP transmission String paramString = URLEncodedUtils.format(params, "utf-8"); // Add parameters to url in GET format url += "?" + paramString; // Execute the request HttpGet httpGet = new HttpGet(url); // Execute the request and fetch Http response HttpResponse httpResponse = httpClient.execute(httpGet); // Extract the result from the response HttpEntity httpEntity = httpResponse.getEntity(); // Open the result as an input stream for parsing httpResponseStream = httpEntity.getContent(); } // Catch Possible Exceptions } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { // Create buffered reader for the httpResponceStream BufferedReader httpResponseReader = new BufferedReader( new InputStreamReader(httpResponseStream, "iso-8859-1"), 8); // String to hold current line from httpResponseReader String line = null; // Clear jsonString jsonString = ""; // While there is still more response to read while ((line = httpResponseReader.readLine()) != null) { // Add line to jsonString jsonString += (line + "\n"); } // Close Response Stream httpResponseStream.close(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } try { // Create jsonObject from the jsonString and return it return new JSONObject(jsonString); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); // Return null if in error return null; } } } 

Он обрабатывает связь, открывает соединение и получает строку JSON, которая затем обрабатывается в объект JSON.

2) на php-сервере откройте соединение mysqli с вашей базой данных SQL, запустите mysqli-> query () и выполните с результатом следующее:

 if (mysqli_num_rows($result) > 0) { // looping through all results $response["apps"] = array(); while ($row = mysqli_fetch_array($result)) { $apps = array(); $apps["name"] = $row["name"]; $apps["package"] = $row["package"]; $apps["version"] = $row["version"]; $apps["dateversion"] = $row["dateversion"]; $apps["sdkver"] = $row["sdkver"]; $apps["pathroot"] = $row["pathroot"]; $apps["rootname"] = $row["rootname"]; $apps["apkmd5"] = $row["apkmd5"]; $apps["extraapkmd5"] = $row["extraapkmd5"]; $apps["instructionsmd5"] = $row["instructionsmd5"]; $apps["assetsmd5"] = $row["assetsmd5"]; $apps["root"] = $row["root"]; $apps["current"] = $row["current"]; // push single product into final response array array_push($response["apps"], $apps); } // success $response["success"] = 1; // echoing JSON response echo json_encode($response); 

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

Как создать что-то вроде этого все объяснено в связанных с учебниками

Сначала вам нужно выбрать между веб-сервисом, который вы собираетесь использовать.
Затем найдите, какой тип будет наилучшим образом удовлетворять ваши потребности.
По мне, самый простой способ разбора json, xml или soap – это следовать (с помощью ссылки на учебник):
Json: работа в кадре Джексона
Xml: Простая структура
Мыло: рамки ksoap2

Это не будет напрямую отвечать на ваш вопрос, но поскольку вы спросили, с чего начать, вы должны начать правильно, создав свои веб-запросы в AsyncTask. Это позволит вам делать ваши запросы в отдельном потоке и устанавливать данные в пользовательском интерфейсе.

AsyncTasks использует пул потоков, а рабочая очередь также упрощает обновление пользователя в ходе выполнения. Здесь есть несколько хороших примеров: пример Android AsyncTask