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

来源:互联网 发布:x免费域名 编辑:程序博客网 时间:2024/05/15 23:43

android客户端和php+mysql+apache搭建的服务器之间的简单交互,实现登入功能。
实现原理就是android客户端发送请求,传给服务器登入的用户名密码,服务器收到这些,连接到数据库查询,如果用户名和密码匹配正确,就输出字符串返回给客户端。

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

在php的虚拟目录下新建个php项目,创建conn.php和login.php文件。刚学点php写的不好。
conn.php是连接mysql数据库的。代码如下:

  1. <?php
  2. $dbhost = "localhost:3306";
  3. $dbuser = "root"; //我的用户名
  4. $dbpass = ""; //我的密码
  5. $dbname = "testlogin"; //我的mysql库名
  6. $cn = mysql_connect($dbhost,$dbuser,$dbpass) or die("connect error");
  7. @mysql_select_db($dbname)or die("db error");
  8. mysql_query("set names 'UTF-8'");
  9. ?>login.php代码:<?php
  10. include ("conn.php");//连接数据库
  11. $username=str_replace(" ","",$_POST['name']);//接收客户端发来的username;
  12. $sql="select * from users where name='$username'";
  13. $query=mysql_query($sql);
  14. $rs = mysql_fetch_array($query);if(is_array($rs)){
  15. if($_POST['pwd']==$rs['password']){
  16. echo "login succeed";
  17. }else{
  18. echo "error";
  19. }
  20. }
  21. ?>
复制代码

php代码写的很烂,服务器算是架设完了。。

android客户端:
布局随意写一下就这样吧:

下面是主要的代码:

  1. class LoginHandler implements Runnable {
  2. @Override
  3. public void run() {
  4. // TODO Auto-generated method stub
  5. //get username and password;
  6. userName = user_name.getText().toString().trim();
  7. password = pass_word.getText().toString().trim();
  8. //连接到服务器的地址,我监听的是8080端口
  9. String connectURL="http://192.168.1.100:8080/text0/com.light.text/login.php/";
  10. //填入用户名密码和连接地址
  11. boolean isLoginSucceed = gotoLogin(userName, password,connectURL);
  12. //判断返回值是否为true,若是的话就跳到主页。
  13. if(isLoginSucceed){
  14. Intent intent = new Intent();
  15. intent.setClass(getApplicationContext(), HomeActivity.class);
  16. startActivity(intent);
  17. proDialog.dismiss();
  18. }else{
  19. proDialog.dismiss();
  20. // Toast.makeText(ClientActivity.this, "登入错误", Toast.LENGTH_LONG).show();
  21. System.out.println("登入错误");
  22. }
  23. }
  24. }//登入的方法,传入用户 密码 和连接地址
  25. private boolean gotoLogin(String userName, String password,String connectUrl) {
  26. String result = null; //用来取得返回的String;
  27. boolean isLoginSucceed = false;
  28. //test
  29. System.out.println("username:"+userName);
  30. System.out.println("password:"+password);
  31. //发送post请求
  32. HttpPost httpRequest = new HttpPost(connectUrl);
  33. //Post运作传送变数必须用NameValuePair[]阵列储存
  34. List params = new ArrayList();
  35. params.add(new BasicNameValuePair("name",userName));
  36. params.add(new BasicNameValuePair("pwd",password));
  37. try{
  38. //发出HTTP请求
  39. httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
  40. //取得HTTP response
  41. HttpResponse httpResponse=new DefaultHttpClient().execute(httpRequest);
  42. //若状态码为200则请求成功,取到返回数据
  43. if(httpResponse.getStatusLine().getStatusCode()==200){
  44. //取出字符串
  45. result=EntityUtils.toString(httpResponse.getEntity());
  46. ystem.out.println("result= "+result);
  47. }
  48. }catch(Exception e){
  49. e.printStackTrace();
  50. }
  51. //判断返回的数据是否为php中成功登入是输出的
  52. if(result.equals("login succeed")){
  53. isLoginSucceed = true;
  54. }
  55. return isLoginSucceed;
  56. }
复制代码


登入成功后会跳到主页:

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

0 0