2013-02-03 3 views
0

다음 코드에 심각한 문제가있어 도움을 얻을 수 있습니다.Android 로그인 화면이 비어 있습니다.

public class WebHandler 
{ 
private String username; 
private String password; 
private boolean errorOccured; 
private String errorMessage; 
private String server; 

public WebHandler(String server) 
{ 
    this.server = server; 
    StrictMode.ThreadPolicy policy = new 
      StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 
} 

public void setUsername(String username) 
{ 
    this.username = username; 
} 

public void setPassword(String password) 
{ 
    this.password = password; 
} 

public String getInternetData(String url) 
{ 
    BufferedReader bufferedReader = null; 
    String data = null; 

    try 
    { 
     HttpClient client = new DefaultHttpClient(); 
     URI website = new URI("http://google.com"); 
     HttpGet request = new HttpGet(); 
     request.setURI(website); 
     HttpResponse response = client.execute(request); 
     bufferedReader = new BufferedReader(new  
        InputStreamReader(response.getEntity().getContent())); 

     StringBuffer stringBuffer = new StringBuffer(""); 

     String line; 

     while ((line = bufferedReader.readLine()) != null) 
     { 
      stringBuffer.append(line); 
      Log.e("PLW", line); 
     } 

     bufferedReader.close(); 
     data = stringBuffer.toString(); 
    } 
    catch(Exception e) 
    { 
     this.errorOccured = true; 
     this.errorMessage = e.getMessage(); 
    } 

    return data; 

} 

public String Post(List<NameValuePair> nameValuePair, String url) 
{ 
    String result = null; 

    HttpClient httpClient = new DefaultHttpClient(); 
    HttpPost httpPost = new HttpPost("http://www.google.com/"); 

    nameValuePair.add(new BasicNameValuePair("usernmae", this.username)); 
    nameValuePair.add(new BasicNameValuePair("password", this.password)); 

    Log.e("PLW_0", "called post..."); 

    try 
    { 
     httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
     HttpResponse response = httpClient.execute(httpPost); 
     result = response.toString(); 
     Log.e("PLW_1", "response:" + result); 
    } 
    catch (Exception e) 
    { 
     // writing exception to log 
     Log.e("PLW_2", "Error:", e); 
     Log.e("PLW_3", "error:" + e.getMessage()); 
    } 
    return result; 
} 

public boolean hasError() 
{ 
    return this.errorOccured; 
} 

public String getError() 
{ 
    return this.errorMessage; 
} 
} 
+4

당신이 직면하고있는 '심각한 문제'를 설명시겠습니까? 예외가 있습니까? 로드하는 데 너무 오래 걸립니까? – Brandon

답변

0

다른 스레드에서 코드를 실행하려고 시도 했습니까? 연결 또는 시간이 많이 걸리는 작업으로 주 스레드를 차단하지 마십시오.

업데이트 :

AsyncTask를 예 :

  1. http://anujarosha.wordpress.com/2012/01/27/handling-http-post-method-in-android/
  2. http://pcfandroid.wordpress.com/2011/07/14/http-post-with-asynctask-android-tutorial/
+0

네, 그게 처음에 제가 한 일입니다. 안타깝게도 스크린은 나에게 블랭킹 아웃 이었기 때문에 인터넷 검색이 안드로이드에서 기본적으로 사용 가능하지 않다는 것을 알아 냈으므로 다음과 같은 코드를 사용하여 새로운 일련의 오류 메시지를 보내야했습니다. \t \t StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder(). permitAll(). build(); \t \t StrictMode.setThreadPolicy (policy); – user2038123

+0

** StrictMode 문 **을 주석 처리하고 코드를 다시 실행 한 후에이 행에 의해 예외가 발생합니다.'HttpPost httpPost = new HttpPost ("http://www.google.com/"); 내 Login 클래스의이 문장에 의해'WebHandler handler = new WebHandler ("192.xxx"); List nameValuePairs = new ArrayList (); String result = handler.Post (nameValuePairs, "test.txt") ;'. test.txt는 ** Hello World **가있는 파일 일뿐입니다. 정확히 여기서 뭘 잘못하고있는거야? – user2038123

+0

예외는 무엇입니까? 테스트 OS 버전? 연결을 AsyncTask에 넣으려고 했습니까? 예 : 1. http://anujarosha.wordpress.com/2012/01/27/handling-http-post-method-in-android/ 2. http://pcfandroid.wordpress.com/2011/07/14/http-post-with-asynctask-android-tutorial/ – madlymad

관련 문제