热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安卓连接mysql数据库,使用okhttp

文章目录一、实现效果:二、提前需要:三、代码1.安卓部分1.build.gradle2.login.xml3.loginActivity。【重要

文章目录

  • 一、实现效果:
  • 二、提前需要:
  • 三、代码
    • 1. 安卓部分
      • 1. build.gradle
      • 2. login.xml
      • 3. loginActivity。【重要!! 这部分包含了get、post】
      • 4. postRequest.java. [这部分是post带参数需要的Bean 实体类]


一、实现效果:
  1. mysql数据库表里的情况:
    在这里插入图片描述

  2. 安卓可以‘user_table’中的数据,注册新增用户,用户登陆。【写的很简单】
    在这里插入图片描述


二、提前需要:
  1. springboot+mysql,连接好。
  2. spingboot中分别写get(带参数、不带参数)和post(带参数)三个接口
  3. 查询到本机的IP地址

三、代码

1. 安卓部分


1. build.gradle

implementation 'com.squareup.okhttp3:okhttp:4.4.1'implementation 'com.google.code.gson:gson:2.8.5'

在这里插入图片描述

2. login.xml


<LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"xmlns:app&#61;"http://schemas.android.com/apk/res-auto"xmlns:tools&#61;"http://schemas.android.com/tools"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"android:orientation&#61;"vertical"tools:context&#61;".LogiActivity"><Buttonandroid:id&#61;"&#64;&#43;id/button"android:onClick&#61;"getRequest"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:text&#61;"查询所有用户" /><Buttonandroid:id&#61;"&#64;&#43;id/button3"android:onClick&#61;"getRequestParam"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:text&#61;"注册" /><Buttonandroid:id&#61;"&#64;&#43;id/button4"android:onClick&#61;"postRequestParam"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:text&#61;"登陆" />LinearLayout>

3. loginActivity。【重要&#xff01;&#xff01; 这部分包含了get、post】

package com.example.mainapp_bleda2;import android.os.Bundle;
import android.util.Log;
import android.view.View;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import com.example.mainapp_bleda2.bean.PostRequest;
import com.google.gson.Gson;import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.TimeUnit;import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;public class LogiActivity extends AppCompatActivity {private static final String TAG &#61; "Login";&#64;Overrideprotected void onCreate(&#64;Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.login2);}//get请求不带参数public void getRequest(View view) {//先来okhttp客户端OkHttpClient okHttpClient &#61; new OkHttpClient.Builder().connectTimeout(8000, TimeUnit.MICROSECONDS).build();// 请求Request request &#61; new Request.Builder().get().url("http://172.20.10.2:8080/user/selectAll").build();// 返回数据的处理okHttpClient.newCall(request).enqueue(new Callback() {&#64;Overridepublic void onResponse(&#64;NonNull okhttp3.Call call, &#64;NonNull Response response) throws IOException {Log.e(TAG, "onResponse: " &#43; response.code());Log.e(TAG, "onResponse: " &#43; response.body().string());}&#64;Overridepublic void onFailure(&#64;NonNull okhttp3.Call call, &#64;NonNull IOException e) {Log.e(TAG, "onFailure" &#43; e.toString());}});}//get请求带参数public void getRequestParam(View view) {//先来okhttp客户端OkHttpClient okHttpClient &#61; new OkHttpClient.Builder().connectTimeout(8000, TimeUnit.MICROSECONDS).build();Map<String, String> map &#61; new HashMap<>();map.put("user_account", "444");map.put("user_pwd", "111");StringBuilder stringBuilder &#61; new StringBuilder();stringBuilder.append("?");//迭代器Iterator<Map.Entry<String, String>> iterator &#61; map.entrySet().iterator();while (iterator.hasNext()){Map.Entry<String, String> next &#61; iterator.next();stringBuilder.append(next.getKey());stringBuilder.append("&#61;");stringBuilder.append(next.getValue());if (iterator.hasNext()){stringBuilder.append("&");}}String str &#61; stringBuilder.toString();// 请求Request request &#61; new Request.Builder().get().url("http://172.20.10.2:8080/user/register"&#43;str).build();// 返回数据的处理okHttpClient.newCall(request).enqueue(new Callback() {&#64;Overridepublic void onResponse(&#64;NonNull okhttp3.Call call, &#64;NonNull Response response) throws IOException {Log.e(TAG, "onResponse: " &#43; response.code());Log.e(TAG, "onResponse: " &#43; response.body().string());}&#64;Overridepublic void onFailure(&#64;NonNull okhttp3.Call call, &#64;NonNull IOException e) {Log.e(TAG, "onFailure" &#43; e.toString());}});}//post请求带参数public void postRequestParam(View view) {//先来okhttp客户端OkHttpClient okHttpClient &#61; new OkHttpClient.Builder().connectTimeout(8000, TimeUnit.MICROSECONDS).build();PostRequest request &#61; new PostRequest();request.setUser_account("111");request.setUser_pwd("1111");Gson gson &#61; new Gson();String jsonStr &#61; gson.toJson(request);MediaType mediaType &#61; MediaType.parse("application/json");RequestBody requestBody &#61; RequestBody.create(jsonStr, mediaType);// 请求Request request1 &#61; new Request.Builder().post(requestBody).url("http://172.20.10.2:8080/user/login").build();// 返回数据的处理okHttpClient.newCall(request1).enqueue(new Callback() {&#64;Overridepublic void onResponse(&#64;NonNull okhttp3.Call call, &#64;NonNull Response response) throws IOException {System.out.println("111");Log.e(TAG, "onResponse: " &#43; response.code());Log.e(TAG, "onResponse: " &#43; response.body().string());}&#64;Overridepublic void onFailure(&#64;NonNull okhttp3.Call call, &#64;NonNull IOException e) {System.out.println("222");Log.e(TAG, "onFailure" &#43; e.toString());}});}
}

4. postRequest.java. [这部分是post带参数需要的Bean 实体类]

package com.example.mainapp_bleda2.bean;public class PostRequest {private String user_account;private String user_pwd;public String getUser_account() {return user_account;}public void setUser_account(String user_account) {this.user_account &#61; user_account;}public String getUser_pwd() {return user_pwd;}public void setUser_pwd(String user_pwd) {this.user_pwd &#61; user_pwd;}
}

学习于这个视频&#xff1a;戳-哔哩哔哩上的一个视频


推荐阅读
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
author-avatar
我所信仰的感觉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有