Я пытаюсь зарегистрироваться в Java Разработанном приложении на Android Studio на этом онлайн-сервере. Я создал класс BackgroundWork, который расширяет AsyncTask. У меня действительно большая проблема с этим классом. Я много раз пытался отладить его, но не нашел ошибок. Можете ли вы дать мне предложение или вы можете показать мне, как это делается?
Это класс BackgroundWork:
public class BackgroundWork extends AsyncTask<String,Void,String> {
Context context;
//use this for mail. Create other contructors for other tasks
public BackgroundWork(Context context){
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected String doInBackground(String... params) {
//write code here
String method = params[0];
if(method.equals("register")){
String username = params[1];
String nume = params[2];
String prenume = params[3];
String pass = params[4];
String login = params[5];
String date = params[6];
HttpURLConnection httpURLConnection = null;
try{
URL url = new URL("http://gladiaholdings.com/PHP/register.php");
httpURLConnection = (HttpURLConnection) url.openConnection();
int responseCode = httpURLConnection.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK){
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Content-Type", "application/x-httpd-php");
httpURLConnection.setReadTimeout(14000);
httpURLConnection.setConnectTimeout(14000);
httpURLConnection.setDoOutput(true);
OutputStream OS = httpURLConnection.getOutputStream();
String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username,"UTF-8") + "&" +
URLEncoder.encode("nume","UTF-8") + "=" + URLEncoder.encode(nume,"UTF-8") + "&" +
URLEncoder.encode("prenume","UTF-8") + "=" + URLEncoder.encode(prenume,"UTF-8") + "&" +
URLEncoder.encode("pass", "UTF-8") + "=" + URLEncoder.encode(pass,"UTF-8") + "&" +
URLEncoder.encode("date","UTF-8") + "=" + URLEncoder.encode(date,"UTF-8") + "&" +
URLEncoder.encode("sex","UTF-8") + "=" + URLEncoder.encode("0", "UTF-8");
String regex = "[0-9]+";
if(login.matches(regex))
data = data + URLEncoder.encode("nrtel", "UTF-8") + "=" + URLEncoder.encode(login,"UTF-8") + "&" +
URLEncoder.encode("mail","UTF-8") + "=" + URLEncoder.encode("-null-","UTF-8");
else
data = data + URLEncoder.encode("mail", "UTF-8") + "=" + URLEncoder.encode(login,"UTF-8") + "&" +
URLEncoder.encode("nrtel","UTF-8") + "=" + URLEncoder.encode("-null-","UTF-8");
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(OS,"UTF-8"));
bufferedWriter.write(data);
bufferedWriter.flush();
bufferedWriter.close();
OS.close();
InputStream IS = httpURLConnection.getInputStream();
IS.close();
Toast.makeText(context, data,Toast.LENGTH_SHORT).show();
return "Registration successful";
}
else Toast.makeText(context, "The server is down", Toast.LENGTH_SHORT).show();
} catch (MalformedURLException e){
e.printStackTrace();
return "Bad URL";
} catch (IOException e) {
e.printStackTrace();
return "IOExeption";
}
}
return "Error, u noob!";
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(context,result,Toast.LENGTH_SHORT).show();
}
}
И это регистр скриптов. php: (который Я проверил на сервере и работает отлично):
<?php
include 'server.php';
$username = $_POST['username'];
$nume = $_POST['nume'];
$prenume = $_POST['prenume'];
$pass = $_POST['pass'];
$mail = $_POST['mail'];
$nastere = $_POST['nastere'];
$sex = $_POST['sex'];
$nrtel = $_POST['nrtel'];
$server = new Server();
$server -> register($username,$nume,$prenume,$pass,$mail,$nastere,$sex,$nrtel);
?>
Хотя мне удалось понять ошибку. Это исключение IOException. Странный факт: если я прокомментирую все и оставлю только инициализацию URL, то ошибок не будет. Но если после этого я напишу какую-либо строку кода, то приложение вылетает (для Toast) или выдает IOExeption (для функции getResponseCode ()).