Android客户端和php+mysql+apache搭建的服务器之间的简单交互
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;
- }
登入成功后会跳到主页:
代码就这样多,实现的最简单的登入方法,其实还有很多要实现的,需要为用户保存用户名和密码及登入成功后或者不成功后的反馈等。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 如何利用安卓手机搭建WEB服务器
- 下一篇: PHP与安卓对接