AndroidStudio о HttpURLConnection - PullRequest
       12

AndroidStudio о HttpURLConnection

0 голосов
/ 03 декабря 2018

Это мой метод!

private String logInActivity() {


    String userID = idText.getText().toString();
    String userPW = pwText.getText().toString();

    final String SERVER = "http://115.145.241.151:8080/AndroidCommunication/LoginActivity.jsp";

    if (userID != null && userPW != null) {


        final String QUERY = "?id=" + userID + "&pw=" + userPW;
        HttpURLConnection connection = null;
        URL url = null;

        try {


            url = new URL(SERVER+QUERY);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();


            InputStream is = connection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));

            String line = reader.readLine();

            return line;

        } catch (Exception e) {


            e.printStackTrace();
            return "3";
        }

    } else {


        Toast.makeText(GetReview.this, "Type all required info", Toast.LENGTH_SHORT).show();

        return "2";
    }
}

Я просто практикую HttpURLConnection (по методике GET METHOD).Я знаю, что не должен отправлять пароли или идентификаторы таким образом, но я просто выполняю упражнение.Но я просто не понимаю, почему это исключение.Пожалуйста помоги!Я не набрал свои адреса или что-то не так, потому что попытался, и сервер был включен.Я отладил его и connection.connect ();не похоже на работу.

мой onCreate идет:

@Override
protected void onCreate(Bundle savedInstanceState) {


    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_get_review);


    pwText = findViewById(R.id.pwText);
    idText = findViewById(R.id.idText);
    resultText = findViewById(R.id.resultText);


    findViewById(R.id.btnLogin).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new LoginAsyncTask().execute(logInActivity());
        }
    });
}

1 Ответ

0 голосов
/ 03 декабря 2018

Проблема в том, что выдача HTTP-запросов в основном потоке не разрешена Android.Вот почему вы получаете исключение NetworkOnMainThreadException.Чтобы решить эту проблему, вы можете использовать IntentService, чтобы выполнить эту работу за вас, а затем передать результаты обратно получателю (ваша деятельность).

Если вы не очень много знаете об услугах Android, тогдапрочитав документацию, вы обнаружите, что используете их снова и снова ...

https://developer.android.com/guide/components/services#CreatingAService

...