您的位置:首页 > 移动开发 > Android开发

android客户端和php服务简单交互

2014-10-09 15:48 288 查看
android客户端和php+mysql+apache搭建的服务器之间的简单交互,实现登入功能。

实现原理就是android客户端发送请求,传给服务器登入的用户名密码,服务器收到这些,连接到数据库查询,如果用户名和密码匹配正确,就输出字符串返回给客户端。
服务器端:

先在mysql里面建一个testlogin的数据库,里面有一个users表,记录了id,用户名和密码。



在php的虚拟目录下新建个php项目,创建conn.php和login.php文件。刚学点php写的不好。

conn.php是连接mysql数据库的。代码如下:

<?php

$dbhost = "localhost:3306";

$dbuser = "root"; //我的用户名

$dbpass = ""; //我的密码

$dbname = "testlogin"; //我的mysql库名

$cn = mysql_connect($dbhost,$dbuser,$dbpass) or die("connect error");

@mysql_select_db($dbname)or die("db error");

mysql_query("set names 'UTF-8'");

?>login.php代码:<?php

include ("conn.php");//连接数据库

$username=str_replace(" ","",$_POST['name']);//接收客户端发来的username;

$sql="select * from users where name='$username'";

$query=mysql_query($sql);

$rs = mysql_fetch_array($query);if(is_array($rs)){

if($_POST['pwd']==$rs['password']){

echo "login succeed";

}else{

echo "error";

}

}

?>

复制代码

php代码写的很烂,服务器算是架设完了。。
android客户端:

布局随意写一下就这样吧:



下面是主要的代码:

class LoginHandler implements Runnable {

@Override

public void run() {

// TODO Auto-generated method stub

//get username and password;

userName = user_name.getText().toString().trim();

password = pass_word.getText().toString().trim();

//连接到服务器的地址,我监听的是8080端口

String connectURL="http://192.168.1.100:8080/text0/com.light.text/login.php/";

//填入用户名密码和连接地址

boolean isLoginSucceed = gotoLogin(userName, password,connectURL);

//判断返回值是否为true,若是的话就跳到主页。

if(isLoginSucceed){

Intent intent = new Intent();

intent.setClass(getApplicationContext(), HomeActivity.class);

startActivity(intent);

proDialog.dismiss();

}else{

proDialog.dismiss();

// Toast.makeText(ClientActivity.this, "登入错误", Toast.LENGTH_LONG).show();

System.out.println("登入错误");

}

}

}//登入的方法,传入用户 密码 和连接地址

private boolean gotoLogin(String userName, String password,String connectUrl) {

String result = null; //用来取得返回的String;

boolean isLoginSucceed = false;

//test

System.out.println("username:"+userName);

System.out.println("password:"+password);

//发送post请求

HttpPost httpRequest = new HttpPost(connectUrl);

//Post运作传送变数必须用NameValuePair[]阵列储存

List params = new ArrayList();

params.add(new BasicNameValuePair("name",userName));

params.add(new BasicNameValuePair("pwd",password));

try{

//发出HTTP请求

httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));

//取得HTTP response

HttpResponse httpResponse=new DefaultHttpClient().execute(httpRequest);

//若状态码为200则请求成功,取到返回数据

if(httpResponse.getStatusLine().getStatusCode()==200){

//取出字符串

result=EntityUtils.toString(httpResponse.getEntity());

ystem.out.println("result= "+result);

}

}catch(Exception e){

e.printStackTrace();

}

//判断返回的数据是否为php中成功登入是输出的

if(result.equals("login succeed")){

isLoginSucceed = true;

}

return isLoginSucceed;

}

复制代码

登入成功后会跳到主页:



代码就这样多,实现的最简单的登入方法,其实还有很多要实现的,需要为用户保存用户名和密码及登入成功后或者不成功后的反馈等。

原文作者:
64779
原文地址:
http://my.eoe.cn/lightlz/archive/3911.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: