Программирование на Android для web разработчика или быстрый старт для самых маленьких. Часть 2

от автора

Приветствую!

Статья является продолжением начатой мной части 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 

Для экономии моего времени и ваших нервных клеток, я осмелюсь прикрепить опрос.

Урок полезен?

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Проголосовал 1 человек. Воздержавшихся нет.

ссылка на оригинал статьи http://habrahabr.ru/post/165251/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *