Android 后台拆分不工作吗
我想知道这段代码有什么问题,如果我尝试拆分,它只会使我的应用程序崩溃,但如果没有拆分代码行,我的应用程序将成功运行并从我的服务器返回一个带有delimeter“|”的响应。代码如下: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"))
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日志窗口中。