【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
2016-11-07 08:29
891 查看
一、写在前面
web开发有前端和后端之分,其实android还是有前端和后端之分。android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发。android和php在当下如此热门,我想作为一个android程序员还是应该清楚android与php的交互的,那么,今天我们就来尝试一波~
二、环境准备
1)虽然现在十分流行wamp(windows+apache+mysql+php)和lamp的php开发模式,但是为了省时省力,今天我们就暂且使用xampp作为环境搭建,xampp的便捷性我想大家一定早有耳闻,这里就不做详细介绍,下载地址:https://www.apachefriends.org/zh_cn/index.html
2)安装过程十分简单,和常规安装方法都是差不多,安装目录一定要在磁盘根目录,我这里就安装在F盘根目录。
3)安装结束后,找到xampp-control.exe,点击运行;
4)启动apache服务和mysql服务,mysql的初始账号为root,密码为空,如需修改自己修改配置文件,如果端口被占用也可以直接通过修改config文件来修改端口(点击config查找listen并修改它就好了),是的,如果你点击start后背景变为这个颜色,就代表你启动服务成功了。
5)端口被占用的话点击config查找listen并修改它就好了
6)检测环境,在浏览器输入127.0.0.1:80(默认端口为80的时候可以不输入),如果能弹出下面的页面就正确的
7)点击phpInfo可以看到当前php环境的情况,点击phpMyadmin可以看mysql数据库,并对其操作;
查看mysql,我们可以在mysql数据库下建表和做一切的数据库操作(你可以使用GUI,也可以使用sql语句,看个人喜好吧);
8)搭建环境就花了太多时间就不好了,下面速度创建一个表,并插入部分数据,省的偏题了,毕竟我们不是来研究如何搭建环境的。
可以看到我这里在Mysql下建立了一个表,表名为aiya_user,并插入了两条数据;
三、PHP端
1)终于到了php代码编写阶段,下面我们就把数据库中的两条数据信息转换为json并在android端成功访问起来。
我们先把表的信息存放在一个php文件中
2)然后写一个response响应,并生成json串,我这里采用的是status(boolean),msg和一个数据结构的方式;
3)下面直接来连接操作数据库进而得到json串
4)运行我们的php文件可以看到:
5)为了看的清晰一些,我们采用json在线解析一下:
看起来的确有几分神似我们平时只用得到的json接口数据哈~这挺棒的。
四、android端
1)android端我暂且就采用当下主流的retrofit2.1.0进行网络访问,具体实用细节大家可以传送过去:http://www.cnblogs.com/liushilin/p/5680135.html
2)简单看下代码:
Response.java
用于存放数据的User.java
最后是MainActivity.java
后记:这里只是简单使用php生成一个可访问接口,只可以在局域网进行访问,其中我的ip:10.1.1.113是路由器IP,只要你的服务器和手机在一个局域网就可以访问到这个json串了。这里还采用的是明文传输,在实际开发中我们却更多的使用加密的方式,并且还需要采用post等方式让android端和服务器进行交互,这些笔者都会持续更新,望大家持续关注~详情请关注楼主的开源app爱吖校推:https://github.com/nanchen2251/AiYaSchoolPush,可以fork得到第一手资讯,我后面会把服务器代码也开源出来~
本demo源码地址:https://github.com/nanchen2251/phpAndroidDemo
web开发有前端和后端之分,其实android还是有前端和后端之分。android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发。android和php在当下如此热门,我想作为一个android程序员还是应该清楚android与php的交互的,那么,今天我们就来尝试一波~
二、环境准备
1)虽然现在十分流行wamp(windows+apache+mysql+php)和lamp的php开发模式,但是为了省时省力,今天我们就暂且使用xampp作为环境搭建,xampp的便捷性我想大家一定早有耳闻,这里就不做详细介绍,下载地址:https://www.apachefriends.org/zh_cn/index.html
2)安装过程十分简单,和常规安装方法都是差不多,安装目录一定要在磁盘根目录,我这里就安装在F盘根目录。
3)安装结束后,找到xampp-control.exe,点击运行;
4)启动apache服务和mysql服务,mysql的初始账号为root,密码为空,如需修改自己修改配置文件,如果端口被占用也可以直接通过修改config文件来修改端口(点击config查找listen并修改它就好了),是的,如果你点击start后背景变为这个颜色,就代表你启动服务成功了。
5)端口被占用的话点击config查找listen并修改它就好了
6)检测环境,在浏览器输入127.0.0.1:80(默认端口为80的时候可以不输入),如果能弹出下面的页面就正确的
7)点击phpInfo可以看到当前php环境的情况,点击phpMyadmin可以看mysql数据库,并对其操作;
查看mysql,我们可以在mysql数据库下建表和做一切的数据库操作(你可以使用GUI,也可以使用sql语句,看个人喜好吧);
8)搭建环境就花了太多时间就不好了,下面速度创建一个表,并插入部分数据,省的偏题了,毕竟我们不是来研究如何搭建环境的。
可以看到我这里在Mysql下建立了一个表,表名为aiya_user,并插入了两条数据;
三、PHP端
1)终于到了php代码编写阶段,下面我们就把数据库中的两条数据信息转换为json并在android端成功访问起来。
我们先把表的信息存放在一个php文件中
<?php // 服务器 define('DB_HOST', '127.0.0.1'); //端口号 define('DB_PORT', '3306'); // 用户名 define('DB_USER', 'root'); // 密码 define('DB_PWD', ''); // 数据库名 define('DB_NAME', 'mysql'); ?>
2)然后写一个response响应,并生成json串,我这里采用的是status(boolean),msg和一个数据结构的方式;
JSON_UNESCAPED_UNICODE这句话是php5.1之后让echo出来的值跳过转为unicode码的方式
<?php class Response { /** * 按json方式输出通信数据 * * @param unknown $status * 状态码 * @param string $message * 提示信息 * @param array $data * 数据 * @return string */ public static function json($status, $message = '', $data = array()) { if (! is_bool ( $status )) { return ''; } $result = array ( 'status' => $status, 'message' => $message, 'data' => $data ); echo json_encode ( $result,JSON_UNESCAPED_UNICODE); } }
3)下面直接来连接操作数据库进而得到json串
<?php require_once 'response.php'; require_once '../test01/db.php'; require_once 'connect_config.php'; $status = false; $msg = ''; $data = array(); // $conn = Db::getInstance()->connect(); $conn = mysqli_connect(DB_HOST,DB_USER,DB_PWD,DB_NAME,DB_PORT) or die('数据库连接失败'); $query = "select * from aiya_user"; $data1 = mysqli_query($conn, $query); if ($data1){ $status = true; $msg = '成功'; $i = 0; while($row = mysqli_fetch_array($data1)){ $data [$i]['username'] = $row['username']; $data [$i]['password'] = $row['password']; $data [$i]['birthday'] = $row['birthday']; $i++; } echo Response::json($status,$msg,$data); // echo '你好'; // echo '<br/>'; // 加入JSON_UNESCAPED_UNICODE 让php转换为json的时候绕过转码为unicode // echo json_encode($value,JSON_UNESCAPED_UNICODE); // echo urlencode(json_encode($value)); }else{ $status = false; $msg = '数据查询失败'; $valuse = array( $status, $msg ); echo json_encode($value,JSON_UNESCAPED_UNICODE); }
4)运行我们的php文件可以看到:
5)为了看的清晰一些,我们采用json在线解析一下:
看起来的确有几分神似我们平时只用得到的json接口数据哈~这挺棒的。
四、android端
1)android端我暂且就采用当下主流的retrofit2.1.0进行网络访问,具体实用细节大家可以传送过去:http://www.cnblogs.com/liushilin/p/5680135.html
2)简单看下代码:
package com.example.nanchen.nettest; import retrofit2.Call; import retrofit2.http.GET; /** * @author nanchen * @fileName NetTest * @packageName com.example.nanchen.nettest * @date 2016/11/05 15:19 */ public interface AppService { @GET("test_api.php") Call<Response> listResponse(); }
Response.java
package com.example.nanchen.nettest; import com.google.gson.annotations.SerializedName; import java.util.List; /** * @author nanchen * @fileName NetTest * @packageName com.example.nanchen.nettest * @date 2016/11/05 15:17 */ public class Response { @SerializedName("status") public boolean status; public String message; public List<User> data; }
用于存放数据的User.java
package com.example.nanchen.nettest; /** * @author nanchen * @fileName NetTest * @packageName com.example.nanchen.nettest * @date 2016/11/05 15:22 */ public class User { private String username; private String password; private String birthday; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + ", birthday='" + birthday + '\'' + '}'; } }
最后是MainActivity.java
package com.example.nanchen.nettest; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Toast; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void btnClick(View view) { Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://10.1.1.113/AiYaSchoolPush/test/") .addConverterFactory(GsonConverterFactory.create()) .build(); AppService service = retrofit.create(AppService.class); service.listResponse().enqueue(new Callback<Response>() { @Override public void onResponse(Call<Response> call, retrofit2.Response<Response> response) { List<User> userList = response.body().data; Toast.makeText(MainActivity.this, "访问成功:" + userList.toString(), Toast.LENGTH_LONG).show(); // Log.e(TAG,"访问成功:"+userList.toString()); for (int i = 0; i < userList.size(); i++) { User user = userList.get(i); String birthday = user.getBirthday(); Log.e(TAG, birthday); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); user.setBirthday(sdf.format(new Date(Long.valueOf(birthday)))); Log.e(TAG, user.toString()); } } @Override public void onFailure(Call<Response> call, Throwable t) { Toast.makeText(MainActivity.this, "访问失败:" + t.getMessage(), Toast.LENGTH_LONG).show(); Log.e(TAG, "访问失败:" + t.getMessage()); } }); } }
后记:这里只是简单使用php生成一个可访问接口,只可以在局域网进行访问,其中我的ip:10.1.1.113是路由器IP,只要你的服务器和手机在一个局域网就可以访问到这个json串了。这里还采用的是明文传输,在实际开发中我们却更多的使用加密的方式,并且还需要采用post等方式让android端和服务器进行交互,这些笔者都会持续更新,望大家持续关注~详情请关注楼主的开源app爱吖校推:https://github.com/nanchen2251/AiYaSchoolPush,可以fork得到第一手资讯,我后面会把服务器代码也开源出来~
本demo源码地址:https://github.com/nanchen2251/phpAndroidDemo
相关文章推荐
- php 接口与前端数据交互实现示例代码
- 采用CakePHP框架为Android应用快速搭建Web Service服务器及API接口的PHP代码实例
- php 接口与前端数据交互实现
- php 接口与前端数据交互实现
- android如何使用自定义JNI接口,以及NDK工具的环境搭建与使用。
- android如何使用自己定义JNI接口,以及NDK环境建设和使用的工具。
- 如何在Windows下搭建Android开发环境
- 在windows在如何搭建Android开发环境
- 如何在Windows下搭建Android开发环境
- 如何在Windows下搭建Android开发环境(转)
- 如何在Windows下搭建Android开发环境
- 如何在Windows下搭建Android开发环境
- 如何在Windows下搭建Android开发环境
- 如何在windows下搭建PHP运行环境?
- 图文详解如何搭建Windows的Android C++开发环境(一)
- 如何在Windows下搭建Android开发环境(转)
- 如何在Windows下搭建Android开发环境(转)
- 如何搭建自己的开发环境
- php环境搭建(自己也写一篇)
- php环境搭建(自己也写一篇)