IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 安卓连接mysql数据库,使用okhttp -> 正文阅读

[移动开发]安卓连接mysql数据库,使用okhttp

一、实现效果:

  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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".LogiActivity">


    <Button
        android:id="@+id/button"
        android:onClick="getRequest"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询所有用户" />

    <Button
        android:id="@+id/button3"
        android:onClick="getRequestParam"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="注册" />

    <Button
        android:id="@+id/button4"
        android:onClick="postRequestParam"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登陆" />

</LinearLayout>

3. loginActivity。【重要!! 这部分包含了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 = "Login";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login2);
    }

    //get请求不带参数
    public void getRequest(View view) {
        //先来okhttp客户端
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .connectTimeout(8000, TimeUnit.MICROSECONDS).build();
        // 请求
        Request request = new Request.Builder()
                .get()
                .url("http://172.20.10.2:8080/user/selectAll")
                .build();
        // 返回数据的处理
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onResponse(@NonNull okhttp3.Call call, @NonNull Response response) throws IOException {
                Log.e(TAG, "onResponse: " + response.code());
                Log.e(TAG, "onResponse: " + response.body().string());
            }

            @Override
            public void onFailure(@NonNull okhttp3.Call call, @NonNull IOException e) {
                Log.e(TAG, "onFailure" + e.toString());
            }
        });
    }

    //get请求带参数
    public void getRequestParam(View view) {
        //先来okhttp客户端
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .connectTimeout(8000, TimeUnit.MICROSECONDS).build();

        Map<String, String> map = new HashMap<>();
        map.put("user_account", "444");
        map.put("user_pwd", "111");
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("?");
        //迭代器
        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry<String, String> next = iterator.next();
            stringBuilder.append(next.getKey());
            stringBuilder.append("=");
            stringBuilder.append(next.getValue());
            if (iterator.hasNext()){
                stringBuilder.append("&");
            }
        }
        String str = stringBuilder.toString();
        // 请求
        Request request = new Request.Builder()
                .get()
                .url("http://172.20.10.2:8080/user/register"+str)
                .build();
        // 返回数据的处理
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onResponse(@NonNull okhttp3.Call call, @NonNull Response response) throws IOException {
                Log.e(TAG, "onResponse: " + response.code());
                Log.e(TAG, "onResponse: " + response.body().string());
            }

            @Override
            public void onFailure(@NonNull okhttp3.Call call, @NonNull IOException e) {
                Log.e(TAG, "onFailure" + e.toString());
            }
        });
    }

    //post请求带参数
    public void postRequestParam(View view) {
        //先来okhttp客户端
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .connectTimeout(8000, TimeUnit.MICROSECONDS).build();

        PostRequest request = new PostRequest();
        request.setUser_account("111");
        request.setUser_pwd("1111");
        Gson gson = new Gson();
        String jsonStr = gson.toJson(request);
        MediaType mediaType = MediaType.parse("application/json");

        RequestBody requestBody = RequestBody.create(jsonStr, mediaType);

        // 请求
        Request request1 = new Request.Builder()
                .post(requestBody)
                .url("http://172.20.10.2:8080/user/login")
                .build();
        // 返回数据的处理
        okHttpClient.newCall(request1).enqueue(new Callback() {
            @Override
            public void onResponse(@NonNull okhttp3.Call call, @NonNull Response response) throws IOException {
                System.out.println("111");
                Log.e(TAG, "onResponse: " + response.code());
                Log.e(TAG, "onResponse: " + response.body().string());
            }

            @Override
            public void onFailure(@NonNull okhttp3.Call call, @NonNull IOException e) {
                System.out.println("222");
                Log.e(TAG, "onFailure" + 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 = user_account;
    }

    public String getUser_pwd() {
        return user_pwd;
    }

    public void setUser_pwd(String user_pwd) {
        this.user_pwd = user_pwd;
    }
}

学习于这个视频:戳-哔哩哔哩上的一个视频

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:55:38  更:2022-08-06 10:57:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 5:00:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码