Android 后台拆分不工作吗

Android 后台拆分不工作吗,android,android-asynctask,Android,Android Asynctask,我想知道这段代码有什么问题,如果我尝试拆分,它只会使我的应用程序崩溃,但如果没有拆分代码行,我的应用程序将成功运行并从我的服务器返回一个带有delimeter“|”的响应。代码如下: protected String doInBackground(String... params) { String type= params[0]; String login_url="somelink.com/somelink.php"; if(type.equals("login"))

我想知道这段代码有什么问题,如果我尝试拆分,它只会使我的应用程序崩溃,但如果没有拆分代码行,我的应用程序将成功运行并从我的服务器返回一个带有delimeter“|”的响应。代码如下:

protected String doInBackground(String... params) {
    String type= params[0];
    String login_url="somelink.com/somelink.php";
    if(type.equals("login")){
        try {
            String username= params[1];
            String password= params[2];
            URL url= new URL(login_url);
            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            OutputStream outputStream = httpURLConnection.getOutputStream();
            BufferedWriter bufferedWriter= new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
            String data=URLEncoder.encode("n", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8");
            data+="&" + URLEncoder.encode("p", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
            bufferedWriter.write(data);
            bufferedWriter.flush();
            bufferedWriter.close();
            outputStream.close();

            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
            String result="";
            String line="";
            while((line = bufferedReader.readLine()) != null){
                result += line;
            }
            String[] words=result.split("\\|");
            StringBuilder ch=new StringBuilder();
            ch.append(words[0]);
            String check=ch.toString();
            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();
            return check;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    return null;
}

我能看到的唯一明显的事情是,您可能正在访问一个不存在的元素。这一行:

ch.append(words[0]);
在某些情况下,
单词
数组的长度可能为零(例如,因为
为空,等等),并且您试图访问一个不存在的元素


您所要做的就是添加
if
语句,在执行
words[0]

之前检查是否有非空数组。您能在日志中看到到底发生了什么吗?比如说,引发了什么样的异常?这就是问题所在,我使用我的android设备测试应用程序,因为我的avd在我的计算机上不工作。你知道你可以通过
adb
轻松登录到你的设备。你可以在设备上看到logcat。请问我怎么做?好的,你必须查看详细信息。(我已经很多年没有做Android编程了。)但是,有两种方法。实际上,您可以通过
adb
将设备连接到计算机,并在设备中打开一个外壳(Android只是一台Linux计算机)。转到你的应用程序目录并找到logcat。(2) 如果您使用像Android Studio这样的IDE,如果您从IDE运行应用程序,logcat会自动显示在您的IDE日志窗口中。