2011-10-04 4 views
0

HttpResponse의 결과를 간단한 문자열과 비교하는 데 문제가 있습니다.android의 HttResponse 결과 비교 문제

아래 코드는 Http 요청의 응답을받는 것입니다. 이 경우 요청의 결과는 간단한 "ok"이지만 다른 문자열과 비교하려고하면 조건문이 작동하지 않습니다.

토스트 메시지를 통해 응답을 표시 할 수 있습니다 ... 디버그하고 예상하고 있는지 확인하려면 있지만 조건부 작동하지 않는 이유를 모르겠습니다.

감사합니다.

imports go here...

public class HttpTest extends Activity {

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    DownloadWebPageTask task = new DownloadWebPageTask(); 
    task.execute(new String[] { "http://www.ecoeficiencia-ambiental.com/test/" }); 
} 
private class DownloadWebPageTask extends AsyncTask<String, Void, String> { 
    protected String doInBackground(String... urls) { 
     String response = ""; 
     for (String url : urls) { 
      DefaultHttpClient client = new DefaultHttpClient(); 
      HttpGet httpGet = new HttpGet(url); 
      try { 
       HttpResponse execute = client.execute(httpGet); 
       InputStream content = execute.getEntity().getContent(); 
       BufferedReader buffer = new BufferedReader(new InputStreamReader(content)); 
       String s = ""; 
       while ((s = buffer.readLine()) != null) { 
        response += s; 
       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
     return response; 
    } 
    protected void onPostExecute(String result) { 
     if(result == "ok"){ 
      Toast.makeText(HttpTest.this, result, Toast.LENGTH_LONG).show(); 
     }else{ 
      Toast.makeText(HttpTest.this, "the conditional fails, the result is: "+result, Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

}

참고 : 매니페스트가 인터넷을 사용할 수있는 권한이 있습니다. 코드와 URL이 모두 작동합니다.

답변

2

당신은

result.equals("ok"); 
+0

왜 안 되세요

string response = EntityUtils.toString(execute.getEntity()); 

:
당신은에 의해 reponse를 확인할 수 있습니까? 은 문자열을 비교하기 위해 조건부로 사용됩니다. – DiegoDevelopero

+0

사실 나는 당신의 제안을 테스트 해 보았지만 작동하지만 여전히 "=="를 사용하여 문자열을 비교해서는 안되는 이유는 확실합니다. 저는 안드로이드에 새로운 사람입니다. – DiegoDevelopero

+0

약간의 연구를 수행했습니다. 개체와 equals() 대신 == 사용 개체를 비교하려면 ==를 사용하여 개체가 같은지 또는 같음을 확인해야 하는지를 알아야합니다() 다른 객체가 될 수 있지만 동일한 값을 가지고 있는지 확인하십시오. 이런 종류의 오류는 찾기가 매우 어려울 수 있습니다. - Interesnting ... 나는 그것을 몰랐다. 도와 주셔서 정말 감사합니다. :) – DiegoDevelopero

0

아를 시도하는

같은 문자열을 비교하는 평등 연산자를 사용하지 않아야합니다, 재미! 당신이 생각하는

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 

다만 하나의 문자열 'OK'로 : 나는 reponse의 엔티티에서 당신이 얻을 문자열뿐만 아니라 이러한 것들을 포함 추측. 그래서 비교가 실패합니다. 재미 :)

+0

문자열을 디버깅하고 "ok"만 포함하면 로그 또는 토스트 메시지를 볼 수 있습니다. 귀하의 답변에 감사드립니다. – DiegoDevelopero