안드로이드 개발 질문/답변
(글 수 45,052)
질문 올리신후, 답변이 달리면 따뜻한 감사 한마디와 채택 부탁드립니다.
인사 한마디는 모든 사람들을 행복하게 만들어요. 덤으로 더좋은 좋은 답변도 불러옵니다.
-------------------------------------------------------------------------------------------------------------------------
현재 제가 구현된 소스이구요..
첫째로. 로그인이 되는지 안되는지 조차 모르겠네요;;
스트림으로 긁어 오면 html들이 다 긁어져 오는지라...
로그인을 하던 안하던 긁어와 버리더라구요..
로그인을 할때 값을 넘겨야 하는 위치와 넘겨야할 파라미터를 어떻게 어디서 확인해야 하나요;;
둘째로, 로그인이 됬다고 가정할 경우...
액티비티도 넘기지 않았구요.. MainActivity 에서 웹뷰로 로그인된 페이지를 출력할려고 했는데..
로그인 하라고만 뜨네요... 흐음;; 어찌 해야 하나요;;
package com.example.login_test;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
String UserID, UserPW; // 아이디 와 패스워드를 저장
String txtView;
EditText EtID; // ID를 입력
EditText EtPW; // 패스워드를 입력
TextView EtView;
Button BtnLogin; // Login버튼 처리
// ImageView Imview;
private WebView Webv;
public DefaultHttpClient httpclient = new DefaultHttpClient();
public CookieManager cookieManager;
String txtView;
EditText EtID; // ID를 입력
EditText EtPW; // 패스워드를 입력
TextView EtView;
Button BtnLogin; // Login버튼 처리
// ImageView Imview;
private WebView Webv;
public DefaultHttpClient httpclient = new DefaultHttpClient();
public CookieManager cookieManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EtID = (EditText) findViewById(R.id.editID); // ID입력 공간
EtPW = (EditText) findViewById(R.id.editPW); // 패스워드 입력 공간
// EtView = (TextView) findViewById(R.id.imageView1);
// Imview = (ImageView) findViewById(R.id.imageView1);
Webv = (WebView) findViewById(R.id.imageView1);
UserID = EtID.getText().toString(); // EtPw에 입력한 텍스트를 ID에 넣음
UserPW = EtPW.getText().toString(); // EtPW에 입력한 텍스트를 PW에 넣음
Log.d("User ID : ",UserID);
Log.d("User PW : ",UserPW);
BtnLogin = (Button) findViewById(R.id.btnLogin);
BtnLogin.setOnClickListener(new OnClickListener(){ // 버튼 을 클릭했을때 발생되는 이벤트
public void onClick(View view) {
// TODO Auto-generated method stub
Login() ; //로그인 함수 호출
System.out.println("Login버튼 클릭.");
}
});
if(cookieManager == null){
CookieSyncManager.createInstance(this);
cookieManager = CookieManager.getInstance();
CookieSyncManager.getInstance().startSync();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
cookieManager.removeAllCookie();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
BtnLogin.setOnClickListener(new OnClickListener(){ // 버튼 을 클릭했을때 발생되는 이벤트
public void onClick(View view) {
// TODO Auto-generated method stub
Login() ; //로그인 함수 호출
System.out.println("Login버튼 클릭.");
}
});
if(cookieManager == null){
CookieSyncManager.createInstance(this);
cookieManager = CookieManager.getInstance();
CookieSyncManager.getInstance().startSync();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
cookieManager.removeAllCookie();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void setSyncCookie() {
// TODO Auto-generated method stub
}
public void Login( ) {
InputStream html = null;
Bitmap bm = null;
DefaultHttpClient httpclient = new DefaultHttpClient(); //웹 서비스
System.out.println("여기는 실행 되시죠?Login 처음 부분");
try{
EtID = (EditText) findViewById(R.id.editID); // ID입력 공간
EtPW = (EditText) findViewById(R.id.editPW); // 패스워드 입력 공간
//EtView = (TextView) findViewById(R.id.imageView1);
Webv = (WebView) findViewById(R.id.imageView1);
UserID = EtID.getText().toString(); // EtPw에 입력한 텍스트를 ID에 넣음
UserPW = EtPW.getText().toString(); // EtPW에 입력한 텍스트를 PW에 넣음
System.out.println("try : 1번 테스트");
List<NameValuePair> qparams = new ArrayList<NameValuePair>(); //ArraryList 사용
qparams.add(new BasicNameValuePair("j_username", UserID));
qparams.add(new BasicNameValuePair("j_password", UserPW));
System.out.println("try : 2번 테스트");
System.out.println(qparams.toString());
/* 네트워크 연결 시간이 지연될경우*/ //5초이상 지연될겨웅 exception
HttpParams params = httpclient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpConnectionParams.setSoTimeout(params, 5000);
System.out.println("try : 3번 테스트");
//Post 로그인 사이트
UrlEncodedFormEntity Urlentity = new UrlEncodedFormEntity(qparams, "UTF-8"); //인코딩
HttpPost httppost = new HttpPost("http://static.nid.naver.com/login.nhn?svc=me&url=http%3A%2F%2Fwww.naver.com&t=20120405"); //Post 방식을 사용
String httpString;
httpString = url(http://static.nid.naver.com/login.nhn?svc=me&url=http%3A%2F%2Fwww.naver.com&t=20120405");
httppost.setEntity(Urlentity); //httppost를 인코딩하여 호출
HttpResponse response = httpclient.execute(httppost); //통신을 시작
System.out.println("try : 5번 테스트");
HttpEntity entity = response.getEntity(); //응답온 데이ㅓ를 얻는다.
List<Cookie> cookies = ((DefaultHttpClient)httpclient).getCookieStore().getCookies();
if(!cookies.isEmpty()){
for(int i= 0; i < cookies.size(); i++){
String cookieString = cookies.get(i).getName() + "=" + cookies.get(i).getValue();
cookieManager.setCookie(httpString, cookieString);
}
}Thread.sleep(500);
if (entity != null) {
System.out.println("엔티티에 값이 있네요.");
}
System.out.println("try : 6번 테스트");
System.out.println(httppost.getURI());
System.out.println(entity.getContent());
if(entity == null)
{
System.out.println("Post : 응답온 데이터가 업습니다.");
}
HttpGet httpget = new HttpGet("http://mail.naver.com/?n=1352868491306&v=f");
System.out.println(httpget.getURI());
System.out.println("httpget : URITEST");
response = httpclient.execute(httpget);
entity = response.getEntity();
if(entity == null)
{
System.out.println("Get : 응답온 데이터가 업습니다.");
}
else{
/*System.out.println("Entity가 NULL이 아님");
html = entity.getContent();
StringBuilder vi = new StringBuilder();
String line =null;
BufferedReader br = new BufferedReader(new InputStreamReader(html));
while((line = br.readLine()) !=null ){
vi.append(line).append("\n");
}
br.close();
txtView = vi.toString();
EtView.setText(txtView);
System.out.println(vi.toString());*/
Webv.loadUrl("http://mail.naver.com/?n=1352868491306&v=f");
Webv.setWebViewClient(new WebViewClient(){
public boolean shouldOverriderUrlLoading(WebView view, String url)
{
view.loadUrl("url);
return true;
}
});
}
}catch (IOException e) {
e.printStackTrace();
System.out.println(e);
System.out.println("첫번째 Catch");
} catch (Exception e){
e.printStackTrace();
System.out.println(e);
System.out.println("두번째 Catch");
System.out.println(httppost.getURI());
System.out.println(entity.getContent());
if(entity == null)
{
System.out.println("Post : 응답온 데이터가 업습니다.");
}
HttpGet httpget = new HttpGet("http://mail.naver.com/?n=1352868491306&v=f");
System.out.println(httpget.getURI());
System.out.println("httpget : URITEST");
response = httpclient.execute(httpget);
entity = response.getEntity();
if(entity == null)
{
System.out.println("Get : 응답온 데이터가 업습니다.");
}
else{
/*System.out.println("Entity가 NULL이 아님");
html = entity.getContent();
StringBuilder vi = new StringBuilder();
String line =null;
BufferedReader br = new BufferedReader(new InputStreamReader(html));
while((line = br.readLine()) !=null ){
vi.append(line).append("\n");
}
br.close();
txtView = vi.toString();
EtView.setText(txtView);
System.out.println(vi.toString());*/
Webv.loadUrl("http://mail.naver.com/?n=1352868491306&v=f");
Webv.setWebViewClient(new WebViewClient(){
public boolean shouldOverriderUrlLoading(WebView view, String url)
{
view.loadUrl("url);
return true;
}
});
}
}catch (IOException e) {
e.printStackTrace();
System.out.println(e);
System.out.println("첫번째 Catch");
} catch (Exception e){
e.printStackTrace();
System.out.println(e);
System.out.println("두번째 Catch");
} finally {
httpclient.getConnectionManager().shutdown();
System.out.println("파이널");
}
}
httpclient.getConnectionManager().shutdown();
System.out.println("파이널");
}
}
private String url(String string) {
// TODO Auto-generated method stub
return null;
}
}
2012.11.15 12:14:56
<input name="j_username" class="portal_fd1 imeDis" id="userId" ....>
로그인을 할때 ID를 "j_username" 이곳으로 넘겨줘야 하나요?
아니면 id = "userld"<< 이곳으로 넘겨줘야 하나요..
List<NameValuePair> qparams = new ArrayList<NameValuePair>(); //ArraryList 사용
qparams.add(new BasicNameValuePair("j_username", UserID));
qparams.add(new BasicNameValuePair("j_password", UserPW));
System.out.println("try : 2번 테스트");
System.out.println(qparams.toString());
qparams.add(new BasicNameValuePair("j_username", UserID));
qparams.add(new BasicNameValuePair("j_password", UserPW));
System.out.println("try : 2번 테스트");
System.out.println(qparams.toString());
UrlEncodedFormEntity Urlentity = new UrlEncodedFormEntity(qparams, "UTF-8"); //인코딩
저는 이렇게 해놓았습니다
이게 아니고 ID값하고 비교 해야 하는건가요??
name하고 비교 하는거 아니에요??




Get이면 주소?변수=값& 이런식으로 붙이면 되고 post면 org.apache.http.NameValuePair 쓰셔서하면 되고요
모바일이라 길게 못담..