Как подключиться к онлайн-серверу с помощью Android Studio в приложении Java? (API 28) - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь зарегистрироваться в 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 ()).

...