Приветствую!
Статья является продолжением начатой мной части 1.
Важно: данный урок не является профессиональным. Автор урока не является специалистом в программировании для платформы Android. Я заранее приношу свои извинения, за неоправданные ожидания.
В Activity для регистрации нужно проделать следующее:
Чтение формы элементарно и осложнений вызвать не должно:
Используя AsyncTask создадим фоновый поток:
Запросы к серверу я вынес в отдельный класс (классы размещаются в той же паке что и Activity). Метод класса принимает логин, пароль и возвращает ответ сервера. Может выглядеть примерно так:
Стоит отметить, что мой сервер общается на JSON. Ответ выглядит так:
Далее, дело техники. Обращаемся к классу в методе doInBackground:
В onPostExecute работаем с результатом:
Для экономии моего времени и ваших нервных клеток, я осмелюсь прикрепить опрос.
Статья является продолжением начатой мной части 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.