Android的简单前后端交互(okHttp+springboot+mysql)
前⾔
前阵⼦发现了个有意思⼜好⽤的框架——okHttp。由于课程设计需要,⽆意间发现了这个框架,打算利⽤此框架与后端交互,可以参考前后端分离的项⽬,把android当做前端,springboot当做后端,以下是⼆者的简单交互。
okHttp说明
(1)android⽹络框架之OKhttp
⼀个处理⽹络请求的开源项⽬,是安卓端最⽕热的轻量级框架,由移动⽀付Square公司贡献(该公司还贡献了Picasso)
⽤于替代HttpUrlConnection和Apache HttpClient
(2)okHttp优势
允许连接到同⼀个主机地址的所有请求,提⾼请求效率
共享Socket,减少对服务器的请求次数
通过连接池,减少了请求延迟
缓存响应数据来减少重复的⽹络请求
减少了对数据流量的消耗
⾃动处理GZip压缩
(3)OKhttp的功能
pycharmjson格式化get,post请求
⽂件的上传下载
加载图⽚(内部会图⽚⼤⼩⾃动压缩)
⽀持请求回调,直接返回对象、对象集合
⽀持session的保持
android前端
逻辑控制:LoginActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
手机mysql安装配置教程import android.widget.EditText;
悬浮导航代码如何写import android.widget.TextView;
import com.campus.book.R;
import com.ity.User;
import com.campus.book.util.http.OKHttpUtil;
le.gson.Gson;
public class LoginActivity extends AppCompatActivity {
//这个url可以通过cmd中输⼊ ipconfig IPv4 地址即为本地电脑的地址 8081为后端的端⼝号
private String baseUrl="1:8081";
private TextView tv=null;
EditText userId = null;
EditText pwd = null ;
Button login=null;
private Button registry=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_login);
setTitle("登录");
tv=findViewById(R.id.tv);
login = (Button)findViewById(R.id.login);
registry = (Button)findViewById(istry);
userId=(EditText) findViewById(R.id.userId);
pwd=findViewById(R.id.pwd);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String id = Text().toString();
ios应用开发教程String Text().toString();
User user=new User(id,password);
Gson gson=new Gson();
String Json(user);
String args[]=new String[]{"user","login"};
String res= OKHttpUtil.postSyncRequest(baseUrl,json,args);
Log.d("同步:",res);
res= OKHttpUtil.postAsyncRequest(baseUrl,json,args);
Log.d("异步:",res);
}
});
registry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String args[]=new String[]{"user","getUser","123"};
String res= SyncRequest(baseUrl,args);
System.out.println("同步:"+res);
String args1[]=new String[]{"user","getUser","123"};
res= AsyncRequest(baseUrl,args1);
System.out.println("异步:"+res);
}
});
}
}
布局⽅式:l
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android/apk/res/android"
xmlns:app="schemas.android/apk/res-auto"
xmlns:tools="schemas.android/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.LoginActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv"
android:text="内容:"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
execl vbaandroid:id="@+id/mainBg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/login" />
<!--@drawable/login改成相应的背景图-->
<TableLayout
android:layout_width="350dp"
android:layout_height="match_parent"
android:stretchColumns="*"
android:layout_marginBottom="150sp"
android:layout_gravity="center" >
<TableRow android:layout_height="match_parent">
<EditText
android:id="@+id/userId"
android:layout_column="0"
android:layout_span="2"
android:hint="请输⼊⼿机号"
android:textColorHint="#FFFFFF"
android:textColor="#FFFFFF"
android:textCursorDrawable="@drawable/cursor_color"
android:textSize="15sp" />
</TableRow>
<TableRow android:layout_height="match_parent" >
<EditText
android:id="@+id/pwd"
android:inputType="textPassword"
android:layout_column="0"
android:layout_span="2"
android:hint="请输⼊密码"
android:textColorHint="#FFFFFF"
android:textColor="#FFFFFF"
android:textCursorDrawable="@drawable/cursor_color"
android:textSize="15sp" />
</TableRow>
<TableRow android:layout_height="match_parent">
<Button
android:id="@+id/login"
android:layout_height="wrap_content"
dw幻灯片代码android:textColor="#FFFFFF"
android:background="#000000"
android:layout_margin="8dp"
android:textSize="15sp"
android:text="登录" />
<Button
android:id="@+id/registry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:background="#000000"
android:layout_margin="8dp"
android:textSize="15sp"
android:text="注册" />
</TableRow>
</TableLayout>
</FrameLayout>
</LinearLayout>
其中,l在drawable中。
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="schemas.android/apk/res/android"
android:shape="rectangle" >
<size android:width="2dp" />
<solid android:color="@android:color/black" />
</shape>
springboot+mysql后端
(1)数据库
表user
(2)springboot中的controller层
如何搭建springboot⼯程就不再赘述了(如有需要,可留⾔,后续可发搭建教程),可⾃⾏参考其他⽂章。@RestController
@RequestMapping("//user")
public class UserController {
@Autowired
private UserService userService;
//Gson gson= Gson();
static Gson gson=new GsonBuilder().serializeNulls().create();
@GetMapping("/list")
public List<User> list() {
return this.userService.list();
}
@PostMapping("/login")
public User login(String json){
User result=null;
User user=null;
User user1=null;
try{
user=gson.fromJson(json,User.class);
}catch (Exception e){
e.printStackTrace();
}
UserId());
if(user1!=null){//存在该账户
Password().Password())){//密码正确 result=user1;
}else{//密码错误
}
}else{//不存在该账户
}
return result;
}
@GetMapping("/getUser/{id}")
public User getUser(@PathVariable("id") Serializable id){
User ById(id);
if(user!=null){//存在
}else{//不存在
}
return user;
}
}
运⾏(交互)效果
(1)点击“登录”按钮,发起post请求
android端
后端
(2)点击“注册”按钮发起get请求
android端
后端
这样就达到了前后端分离的效果,是不是很神奇!可以愉快的和⼩组成员分开进⾏开发啦!
在Android端中⽤到了个⼈结合需要编写的okHttp的⼯具类,可参考上篇⽂章:
到此这篇关于Android的简单前后端交互(okHttp+springboot+mysql)的⽂章就介绍到这了,更多相关Android 前后端交互内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论