Статья является продолжением начатой мной части 1.
Предостережение
Важно: данный урок не является профессиональным. Автор урока не является специалистом в программировании для платформы Android. Я заранее приношу свои извинения, за неоправданные ожидания.
RegistrationActivity
В Activity для регистрации нужно проделать следующее:
- 1. Прочесть данные формы
- 2. Validation на стороне клиента (опционально и мной не реализовано)
- 3. Запрос к серверу в фоновом потоке
- 4. Обработка ответа сервера
Чтение формы элементарно и осложнений вызвать не должно:
final EditText login = (EditText)findViewById(R.id.login); final EditText password = (EditText)findViewById(R.id.password); final EditText password2 = (EditText)findViewById(R.id.password2); // при желании сравнить пароли
Работ с сетью в новом потоке
Используя AsyncTask создадим фоновый поток:
// 3 параметр это тип возвращаемых данных методом doInBackground, его я буду обрабатывать в onPostExecute class AsyncTaskExample extends AsyncTask<Void, Integer, String> { // фоновая работа @Override protected String doInBackground(Void... params) { } // выполняется после doInBackground, имеет доступ к UI protected void onPostExecute(String result) { } catch (JSONException e) { e.printStackTrace(); } } } // запуск потока new AsyncTaskExample().execute();
Запросы к серверу я вынес в отдельный класс (классы размещаются в той же паке что и Activity). Метод класса принимает логин, пароль и возвращает ответ сервера. Может выглядеть примерно так:
public class ServerSendData { private static String server = "http://xxx.xxx.x.xxx/"; public static String mlogin = null; public static String mpassword = null; public static String sendRegData(String login,String password) { String result = null; mlogin = login; mpassword = password; try { URL url = new URL("" + server + "apiregistration/create/"+mlogin+"/"+mpassword+""); URLConnection connection = url.openConnection(); HttpURLConnection httpConnection = (HttpURLConnection)connection; int responseCode = httpConnection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { InputStream in = httpConnection.getInputStream(); BufferedReader r = new BufferedReader(new InputStreamReader(in)); result = r.readLine(); Log.w("res",""+result+""); } else { } } catch (MalformedURLException e) {} catch (IOException e1) {} return result; }
Стоит отметить, что мой сервер общается на JSON. Ответ выглядит так:
{"status":"login_busy"}
Далее, дело техники. Обращаемся к классу в методе doInBackground:
return ServerSendData.sendRegData(""+login.getText().toString()+"",""+ password.getText().toString()+"");
В onPostExecute работаем с результатом:
JSONObject object = new JSONObject(result); String status = object.getString("status"); // status будет содержать login_busy
Для экономии моего времени и ваших нервных клеток, я осмелюсь прикрепить опрос.
ссылка на оригинал статьи http://habrahabr.ru/post/165251/
Добавить комментарий