2014-03-04 6 views
-1

웹 페이지에 로그인하여 로그인이 성공했지만 앱이 다운되는지 확인하려고합니다. 내 코드는 다음과 같습니다.앱이 작동을 멈추고 웹 페이지에 로그인하려고 시도합니다.

package com.shortey.logtoweb; 

import java.io.IOException; 
import java.io.UnsupportedEncodingException; 
import java.util.ArrayList; 
import java.util.List; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void login (View view) { 
    try { 
     final String LOGIN_LINK = "https://www.manodienynas.lt/"; 
     final String MY_EMAIL = "********"; //here should be my username 
     final String MY_PW = "********"; //here should be my password 

     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(LOGIN_LINK); 

     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); 
     nameValuePairs.add(new BasicNameValuePair("username", MY_EMAIL)); 
     nameValuePairs.add(new BasicNameValuePair("password", MY_PW)); 
     nameValuePairs.add(new BasicNameValuePair("submit_login", "Prisijungti")); 

     httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse response = httpClient.execute(httpPost); 

     TextView TV1 = (TextView)findViewById(R.id.textView1); 

     if (response.getStatusLine().getStatusCode() < 400) { 
      TV1.setText("Success"); 
     } else { 
      TV1.setText("Failed"); 
     } 
    } catch (UnsupportedEncodingException e) { 

    } catch (ClientProtocolException e) { 

    } catch (IOException e) { 

    } 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

버튼을 눌러 login() 메소드를 호출합니다. 제 코드가 잘못되어 응용 프로그램이 다운되는 것을 수정하도록 도와주세요. 나는 예외를 제대로 처리하지 못했지만 내 응용 프로그램이 충돌하지는 않지만 어쩌면 문제를 찾는 데 도움이 될 것이라고 생각합니다. 내 경우에 그들을 어떻게 적절하게 다루는가? 미리 감사드립니다!

+0

당신이 스택 추적을 [android.os.NetworkOnMainThreadException]의 – Yuvi

+0

중복 가능성을 게시 할 수있는 (http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception) – Selvin

답변

1

ui 스레드에서 네트워크 관련 작업을 실행하고 있습니다. Thread 또는 AsycTask을 사용하십시오.

HttpResponse response = httpClient.execute(httpPost); // must be executed in a thread 
+0

당신이 유일한 문제가 확실 ? 그러나 나는 그것을 즉시 고치려고 노력할 것이다! 감사! – Salivan

+0

@ user2883597 변경 사항을 적용하고 문제가 발생하면 stacktrace에 게시하십시오. 현재 당신은'NetworkOnMainThreadException'을 가지고 있다고 생각합니다. – Raghunandan

+0

와우! 나는 당신이 나에게 조언 한 것을 할 수 있었고 완벽하게 작동하는 것 같습니다! 이제 로그인 한 웹 페이지에서 일부 데이터를 가져 오려고 노력할 것입니다;] BUNCH에 감사드립니다 !!! – Salivan

관련 문제