0

我收到了从 php 到 android 的响应,请参见下面的 .php

 <?php
 $username = $_POST[username];
 $password = $_POST[password];
 if($username == "himm")
 {
if($password == "rangde"){
        echo "success" ;
}
else{
    echo "passwor is wrong.";
}
  }
 else
 {

echo "fail";
  }
  ?>

我在android的logcat窗口中取得了成功。但是在android中我做了如下比较,

  BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
  StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
           sb.append(line + "\n");
    }
    is.close();
    result = sb.toString();
    Log.v("","Result : "+result);
    Log.v("","this is Result: "+result.equalsIgnoreCase("success"));
    if(result.equals("success")){
        Log.v("","Login successfully......");
}
else{
        Log.v("","Fail to login......");
    }

但在 logcat 窗口中,我看到“登录失败”消息。Php 以“成功”的形式发送响应,但是哪种类型?这里 if(result.equals("success")) 的条件应该为真。请任何人给我想法或建议来实现这个目标............提前谢谢你

4

3 回答 3

1

sb.append(line + "\n");将“成功”修改为“成功\n”,因此if(result.equals("success")){失败,因为“成功\n”与“成功”不匹配。

于 2012-08-30T14:05:42.600 回答
1

在您的 android 代码中,将尾随 LineFeed 添加到您从 php 收到的结果中:

sb.append(line + "\n");

因此,您实际上将 'success' 与 'success\n' 进行比较,这是错误的。

于 2012-08-30T14:05:46.207 回答
0

除了之前发布的答案(这是正确的)之外,我想指出 HTTP 包含执行您正在尝试执行的操作的机制。

Http 身份验证允许您使用标准的 Http 返回代码(成功时为 200,身份验证失败时为 401)并使用现有系统来处理该部分(大多数框架都会提供)。

它还允许您将身份验证与您从服务器发回的其余消息分开,并在您从服务器收到标头时立即比较身份验证状态。

于 2012-08-30T14:18:22.013 回答