Pull to refresh

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

Reading time2 min
Views51K
Приветствую!

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


Для экономии моего времени и ваших нервных клеток, я осмелюсь прикрепить опрос.
Only registered users can participate in poll. Log in, please.
Урок полезен?
64.44% да319
35.56% нет176
495 users voted. 241 users abstained.
Tags:
Hubs:
Total votes 60: ↑44 and ↓16+28
Comments17

Articles