Android 는 PHP 서버 를 통 해 로그 인 기능 을 수행 합 니 다.

7101 단어 AndroidPHP로그 인
Android 클 라 이언 트 와 PHP,MySQL 이 구축 한 서버 간 의 간단 한 상호작용 으로 로그 인 기능 을 수행 합 니 다.
실현 원리 도:

Handler 메시지 메커니즘 원리:
Handler 메커니즘 은 주로 Message,Handler,Message Queue,Looper 등 네 가지 관건 적 인 대상 을 포함한다.
다음은 이 네 개의 관건 적 인 대상 에 대해 간단하게 소개 한다.
1.Message
Message 는 스 레 드 간 에 전달 되 는 메시지 로 내부 에 소량의 정 보 를 가지 고 서로 다른 스 레 드 간 에 데 이 터 를 교환 할 수 있 습 니 다.Message 의 what 필드 는 정형 데 이 터 를 휴대 할 수 있 고 obj 필드 는 Object 대상 을 휴대 할 수 있 습 니 다.
2.Handler
Handler 는 메 시 지 를 보 내 고 메 시 지 를 처리 하 는 데 주로 사용 된다 는 뜻 이다.일반적으로 Handler 대상 의 sendmessage()방법 으로 메 시 지 를 보 내 고 보 내 는 메 시 지 는 일련의 전전 처 리 를 거 쳐 최종 적 으로 Handler 대상 의 HandlerMessage()방법 에 전달 된다.
3.MessageQueue
Message Queue 는 메시지 큐 라 는 뜻 으로 Handler 를 통 해 보 낸 메 시 지 를 저장 하 는 데 사 용 됩 니 다.Handler 를 통 해 보 내 는 메 시 지 는 Message Queue 에서 처 리 를 기다 리 고 있 습 니 다.스 레 드 마다 message Queue 대상 만 있 습 니 다.
4.Looper
Looper 는 모든 스 레 드 에 있 는 Message Queue 의 집사 입 니 다.Looper 의 loop()방법 을 호출 하면 무한 순환 에 들 어 갑 니 다.그리고 Message Queue 에 메시지 가 있 는 것 을 발견 할 때마다 이 를 꺼 내 Handler 의 HandlerMessage()방법 에 전달 합 니 다.그 밖 에 모든 스 레 드 에 Looper 대상 만 있 습 니 다.메 인 스 레 드 에서 Handler 대상 을 만 들 때 시스템 은 Looper 아연 도금 을 만 들 었 기 때문에 Looper 대상 을 수 동 으로 만 들 지 않 고 하위 스 레 드 에 있 는 Handler 대상 은 Looper.loop()방법 으로 메시지 순환 을 시작 해 야 합 니 다.

그림 에서 전체 Handler 메시지 처리 절 차 를 뚜렷하게 볼 수 있다.Handler 메시지 처 리 는 먼저 UI 스 레 드 에 Handler 대상 을 만 든 다음 하위 스 레 드 에서 sendmessage()방법 을 호출 합 니 다.이 어 이 메 시 지 는 UI 스 레 드 의 Message Queue 에 저 장 됩 니 다.Looper 대상 을 통 해 Message Queue 의 메 시 지 를 꺼 내 고 마지막 으로 Handler 의 HandMessage()방법 에 배 포 됩 니 다.
다음은 제 가 쓴 코드 와 이 프로그램의 logcat 실행 결과 입 니 다.
이번 퀘 스 트 에서 만난 난제:
 PHP 서버 에 연결 할 수 없습니다.본인 이 입력 한 아 이 디 와 비밀 번 호 를 JSON 으로 봉 인 했 지만 PHP 로 보 낼 수 없습니다.  창고 의 비교 에 의 하면.

package com.itcast.test03;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;


public class MainActivity extends Activity {
 private EditText et_username;
 private EditText et_userPsd;
 private Button login;
 private Button signUp;
 private CheckBox save;
 private String user,pass;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.activity_main);
  et_username = (EditText)findViewById(R.id.et_number);
  et_userPsd = (EditText)findViewById(R.id.et_password);
  login=(Button)findViewById(R.id.login);
  signUp=(Button)findViewById(R.id.signUp);
  save = (CheckBox)findViewById(R.id.save);  
  //         
  login.setOnClickListener(new View.OnClickListener() {
   
    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    
     //                
    String name =et_username.getText().toString();
    String pwd = et_userPsd.getText().toString();
     //  login  
    login(name, pwd);
    }
    });
    }
    
    private void login(final String name, final String pwd){
     //  Handler  
    final Handler handler = new Handler() {
     
    public void handleMessage(Message msg) {
    if(msg.what == 1){
     Toast.makeText(MainActivity.this, "    ", Toast.LENGTH_SHORT).show();
     //      
     finish();
    }else if(msg.what == 0){
     Log.i(name, msg.toString());
    }else if(msg.what == -1){
     Log.i("==============",msg.toString());
    }
    }
    };
    new Thread(){
    public void run() {
     //  Message  
    Message msg =new Message();
    try {
     Post po = new Post();
     String infoo = po.logina(name, pwd);
        if(infoo != null){
        msg.what = 1;//  
        msg.obj = infoo;
        }else{
        msg.what = 0;//  
        msg.obj = "2";
        }
       } catch (Exception e) {
       e.printStackTrace();
     msg.what = -1;
     msg.obj = e;
       }
    handler.sendMessage(msg);
    }
    }.start();
    }
 }




package com.itcast.test03;
import java.io.IOException;

import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class Post {
 
 public String logina(String name, String pwd)throws ParseException, IOException, JSONException{
   //   HttpClient  
   HttpClient httpClient = new DefaultHttpClient();
   String strurl = "http://10.6.78.213:2016/xampp/sse/index.php/home/Index/server_info";
   HttpPost request = new HttpPost(strurl);
   request.addHeader("Accept","application/json");
   request.addHeader("Content-Type","application/json");//        header
   JSONObject param = new JSONObject();//  json  
   param.put("sequenceId", "87620056570355357690");
   param.put("accType", "0");
   param.put("loginId", name);
   param.put("password", pwd);
   //param.put("thirdpartyAppId", "");
   //param.put("thirdpartyAccessToken", "");
   param.put("loginType", "1");
   Log.i("===========", param.toString());
   System.out.println("1+===========");
   StringEntity se = new StringEntity(param.toString());
   request.setEntity(se);//    
   HttpResponse httpResponse = httpClient.execute(request);//    
   System.out.println("2+===========");//                 。                                     
   int code = httpResponse.getStatusLine().getStatusCode();
   System.out.print(code);
   String result = EntityUtils.toString(httpResponse.getEntity());
   JSONObject result1 = new JSONObject(result);
   String info = (String) result1.get("retInfo");
   Log.i("=============", info);
   return info;
   }

}

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기