有人能告诉我我的代码搞砸了吗?
我已经尝试了许多可能的解决方案来实现这一点(包括.toString()。trim();在onPostExecute内部。
我正在使用HttpURLConnection通过PHP脚本从我的服务器获取响应。我的PHP脚本是"经过测试",我的Android代码正常工作,直到我尝试将onPostExecute方法的响应/结果字符串值转换为IF或Switch-Case或Log等条件。 / p>
结果在Toast中可以正常工作,但在Log.e或条件中不会。
asyncTask在我的MainActivity中,但在onCreate方法之下/之外。
这是对AsyncTask的调用:
new myAsyncTask().execute();
这是onPostExecute在MainActivity中调用的:
// this method should receive the result from onPostExecute.
private void asyncTaskFinished(String output) {
Toast resultToast = Toast.makeText(getApplicationContext(), output + " at asyncTaskFinished", Toast.LENGTH_LONG);
resultToast.setGravity(Gravity.CENTER, 0, 0);
resultToast.show();
if(output.equals("EMPTY")) {
Log.e("asd", output); // this should prove that the conditional worked.
finish(); // this is also here to prove that the conditional worked.
}
}
这是AsyncTask的开头:
private class myAsyncTask extends AsyncTask<String, Integer, String>{
@Override
protected String doInBackground(String... params) {
这些是doInBackground方法的一部分:
String response = stringBuilder.toString();
// Close response stream:
responseStream.close();
result = response.toString().trim();
return result;
这是onPostExecute方法的开始:
protected void onPostExecute(String result){
MainActivity.this.asyncTaskFinished(result); // this is what I am using to get the result into the MainActivity.
我不相信我忽视了任何事情。
提前谢谢。
答案 0 :(得分:0)
我会考虑我打开,关闭的这个问题,除非有人想要提供更多信息。
感谢@rmlan提醒我在我以前的一个Log.e列表中看到的东西,因为它让我心旷神怡。现在我觉得这样一个Newb。
@rmlan如果我被允许,我会提高你的回复。
“EMPTY”,以及我收到的任何其他结果都在其前面附加了“?”/问号。据我所知,它并非来自PHP方面,因为我在将它发送到android之前修剪了回声输出,所以它让我相信它与返回的Unicode编码有关。
经过一些更多的研究后,我假设问号是所谓的字节顺序标记(BOM)。
虽然问号会显示在Log.e输出中,但它不会显示在toast中,也不会显示我制作的包含editText字段的临时AlertDialog。
所有这一切的奇怪之处在于我的条件代码工作正常,然后突然它拒绝工作,这导致我在Log.e输出中找到问号。
我的问题的解决方案是改变这个:
if(output.equals("EMPTY")) {
Log.e("asd", output); // this should prove that the conditional worked.
finish(); // this is also here to prove that the conditional worked.
}
到此:
if(output.contains("EMPTY")) {
Log.e("asd", output); // this should prove that the conditional worked.
finish(); // this is also here to prove that the conditional worked.
}
我不想使用'包含',但在找到问号的来源之前,我必须忍受它。
如果有人知道问号的来源,请加入。
我希望所有这些都有助于其他人。