300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > android与php登录 Android开发中使用PHP服务器怎么实现一个登录功能

android与php登录 Android开发中使用PHP服务器怎么实现一个登录功能

时间:2019-02-04 06:20:40

相关推荐

android与php登录 Android开发中使用PHP服务器怎么实现一个登录功能

Android开发中使用PHP服务器怎么实现一个登录功能

发布时间:-11-20 15:33:46

来源:亿速云

阅读:98

作者:Leah

Android开发中使用PHP服务器怎么实现一个登录功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Android客户端和PHP、MySQL搭建的服务器之间的简单交互,实现登录功能 。

实现原理图:

Handler消息机制原理:

Handler机制主要包括4个关键对象,分别是Message、Handler、MessageQueue、Looper。

下面对这4个关键对象进行简单的介绍。

1.Message

Message是线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间交换数据。Message的what字段可以用来携带一些整型数据,obj字段可以携带一个Object对象。

2.Handler

Handler就是处理者的意思,它主要用于发送消息和处理消息。一般使用Handler对象的sendMessage()方法发送消息,发出的消息经过一系列的辗转处理后,最终会传递到Handler对象的HandlerMessage()方法中。

3.MessageQueue

MessageQueue是消息队列的意思,它主要用来存放通过Handler发送的消息。通过Handler发送的消息会存在MessageQueue中等待处理。每个线程中只会有一个MessageQueue对象。

4.Looper

Looper是每个线程中的MessageQueue的管家。调用Looper的loop()方法后,就会进入一个无限循环中。然后,每当发现MessageQueue中存在一条消息,就会将它取出,并传递到Handler的HandlerMessage()方法中。此外,每个线程也只会有一个Looper对象。在主线程中创建Handler对象时,系统已经创建了Looper镀锌,所以不用手动创建Looper对象,而在子线程中的Handler对象,需要调用Looper.loop()方法开启消息循环。

图中可以清晰的看到整个Handler消息机制处理流程。Handler消息处理首先需要在UI线程创建一个Handler对象,然后在子线程中调用了sendMessage()方法,接着这个消息会存放在UI线程的MessageQueue中,通过Looper对象取出MessageQueue中的消息,最后分发回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:/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", "8766570355357690");

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;

}

}

关于Android开发中使用PHP服务器怎么实现一个登录功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。