我正在从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窗口中获得了成功。但在安卓系统中,我做了如下比较,
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"))的条件应该为true。请任何机构给我实现目标的想法或建议。。。。。。。。。。提前感谢
sb.append(line + "'n");
将"success"修改为"success''n",因此if(result.equals("success")){
会失败,因为"success''n'"与"success'"不匹配。
在您的android代码中,您将从php:收到的结果添加一个尾随的LineFeed
sb.append(line + "'n");
所以你实际上把"成功"比作"成功",这是错误的。
除了之前发布的答案(这些答案是正确的)之外,我想指出的是,HTTP包含了一些机制来做你正在尝试做的事情。
Http身份验证允许您使用标准的Http返回代码(成功时为200,身份验证失败时为401),并使用现有系统来处理该部分(大多数框架都会提供这样的代码)。
它还允许您将身份验证与从服务器发回的其余消息分开,并在收到来自服务器的标头后立即比较身份验证状态。