2012-03-06 6 views
0

인증을 위해 웹 사이트에 사용자 이름과 암호를 보내고 있습니다. 서버에서 결과를 검색 한 후 결과를 변수 'response'이 시점까지 모든 것이 올바르게 작동 함if 문이 결과를 반환하지 않습니다.

response = sb.toString(); 
Toast.makeText(this,"Returned Value: "+ response,0).show(); 

위의 토스트에 표시된 값은 PHP 스크립트에 의해 반환되는 값입니다. 유효한 사용자와 유효하지 않은 사용자를 모두 사용했으며 위의 Toast는 서버에서 반환 한 올바른 값 (예 : '좋은 로그인'또는 '로그인 실패')을 보여줍니다. 문

if("Good Login".equals(response)){ 
Toast.makeText(this, "Registered User" + mUsername, 0).show(); 
} 
if("Login Failed".equals(response)){ 
Toast.makeText(this, "Sorry You're Not A Registered Subscriber",0).show(); 
} 

내가 하나 하나에서 아무것도 점점없는거야 "경우에"나는 그래서 몇 가지 테스트에 넣어 한 적절한 활동을 시작할 수 있습니다 나는 그 결과를 테스트 할. 나는 또한 시도했다

if(response.equals("Good Login")){ 
Toast.makeText(this, "Registered User" + mUsername, 0).show(); 
} 
if(response.equals("Login Failed")){ 
Toast.makeText(this, "Sorry You're Not A Registered Subscriber",0).show(); 
} 

같은 결과를보십시오. 그 밖에 무엇을 시험 할 지 확신하지 못합니다. 성공 또는 실패 여부를 테스트하는 더 좋은 방법이 있습니까?

감사

+1

코드를 디버그하여 ** 응답 **이 반환 된 것을 확인 했습니까? – bschultz

+1

응답의 실제 값을 확인해 보셨습니까? "좋은 로그인"또는 "로그인 실패"중 하나입니까? untrimmed string이 될 수 있습니까? "좋은 로그인"또는 "로그인 실패"와 같은 –

+0

인코딩 문제 일 수 있습니다.이 질문을 살펴보십시오. http://stackoverflow.com/questions/4210713/equal-and-equalsignorecase-return-false-for-equal-strings – MByD

답변

2

디버그 (또는 인쇄)를 response 변수의 정확한 값입니다.

그것은 공백이 있다는 것, 그래서 당신이 response = response.trim()

+0

트림()이었습니다. 일단 다듬 었더니 모든 것이 효과를 냈습니다. 감사합니다. – Hank

+0

@ 행크. 답변을 수락 된 것으로 표시해야합니다. – Bozho

+0

@Hank - Toast.makeText (this, "반환 값 :"+ 응답, 0) .show();와 같이 출력하면 @Hank가 도움이됩니다. 출력 문자열을 무언가로 둘러 쌉니다. - 대괄호 'Toast.makeText (this, "반환 값 : ["+ 응답 + "]", 0) .show();를 사용하면 앞과 뒤의 공백 –

0
  1. 내가 오류 응답을 확인하는 일부 문자열이 아닌 정수 오류 코드를 반환해야 할 수도 있습니다.
  2. 그렇지 않으면 equalsIgnoreCase
0

자바 문자열이 기능은 민감한 비교 간격/완전히 경우가 같음을 사용, 올바른 케이스를 반환되어 있는지 확인합니다.

그래서 : response = "Good Login " 또는 여분의 공백이나 인쇄되지 않는 문자가 포함되어 있으면 테스트가 실패합니다.

내부 공백을 제외하고 모든 공백을 제거하는 것이 좋습니다. Here's 그냥 그렇게하는 것에 대해 의문 이군요. 또한 실제 비교를 수행 할 때는 String.equalsCaseInsesitive()을 사용하십시오.

관련 문제