Android Studio 关于 HttpURLConnection

AndroidStudio about HttpURLConnection

这是我的方法!

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(通过获取方法)。我知道我不应该像这样发送密码或 ID,但我只是在练习。但我只是不明白为什么会出现异常。请帮忙! 我没有输入我的地址或任何错误,因为我试过了,而且服务器是开着的。我调试了它和 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());
        }
    });
}

问题是 android 不允许在主线程上发出 HTTP 请求。这就是您收到 NetworkOnMainThreadException 异常的原因。要解决此问题,您可以使用 IntentService 为您完成这项工作,然后将结果广播回接收器(您的 activity)。

如果您对 android 服务了解不多,请阅读文档,您会发现自己会一次又一次地使用它们...

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