Android使用Okhttp进行数据交互

Android的简单前后端交互(okHttp+springboot+mysql) 前言 前阵子发现了个有意思又好用的框架——okHttp。由于课程设计需要,无意间发现了这个框架,打算利用此框架与后端交互,可以参考前后端分离的项目,打算把android当做前端,springboot当做后端,以下是二者的简单交互。 okHttp说明 (1)android网络框架之OKhttp 一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso) 用于替代HttpUrlConnection和Apache HttpClient (2)okHttp 阅读详情

前言

在遇到Android数据交互的情况时,思考过采取什么方式,在经过一段时间的学习,最终采取Okhttp这一个轻量级网络框架。

1、工具类实现

public class OkHttpUtil {

    public final static String TAG = "OkHttpUtil";
    public final static int CONNECT_TIMEOUT = 60;
    public final static int READ_TIMEOUT = 100;
    public final static int WRITE_TIMEOUT = 60;
    // 后台数据接口基础路径
    public final static String BASE_URL="http://192.168.64.1:8010";
    public static final OkHttpClient client = new OkHttpClient.Builder()
            .readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)// 设置读取超时时间
            .writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS)// 设置写的超时时间
            .connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS)// 设置连接超时时间
            .build();
    public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");

    //post请求,携带参数
    public static String post(String url, String json) throws IOException {
        RequestBody body = RequestBody.create(JSON, json);
        Request request = new Request.Builder()
                .url(url)
                .post(body)
                .build();
        Response response = client.newCall(request).execute();
        if (response.isSuccessful()) {
            return response.body().string();
        } else {
            throw new IOException("Unexpected code " + response);
        }
    }
    //get请求。不带参数
     public static String get(String url) throws IOException{
        Request request = new Request.Builder()
                .url(url)
                .get()
                .build();
        Response response = null;
        //同步请求返回的是response对象
        response = client.newCall(request).execute();
        if (response.isSuccessful()) {
            return response.body().string();
        } else {
            throw new IOException("Unexpected code " + response);
        }
    }
 }

2、场景应用

举个栗子:商城app中首页中想要获取所有商品数据展示出来

后台用的是springboot,数据接口是:/api/commodity/getAllGoodByType

	private void initProducts() {
        String url = OkHttpUtil.BASE_URL + "/api/commodity/getAllGoodByType";
    	// 主线程
        new Thread(new Runnable() { 
            @Override
            public void run() {
                try {
                    String callStr = OkHttpUtil.get(url);
                    JSONObject call_json = JSONObject.parseObject(callStr);
                    final String code = call_json.getString("code");
                    final String msg = call_json.getString("msg");
                    if (code.equals("0")) {
                        proList = JSON.parseObject(callStr, GoodsBean.class);
                        //开启子线程,更新UI界面
                        hander.sendEmptyMessage(0);
                        Looper.prepare();
                        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
                        Looper.loop();
                    } else if (code.equals("500")) {
                        Looper.prepare();
                        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
                        Looper.loop();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
	}

	//子线程通知主线程更新ui
    private Handler hander = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch(msg.what){
                case 0:
                    // notifyDataSetChanged动态更新UI
                    proAd.notifyDataSetChanged();
                    proAd.add(proList.getData());
                    // 在适配器上添加数据
                    recommendRec.setAdapter(proAd);
                    break;
                default:
                    // do something
                    break;
            }
        }
    };
  • 注意:在进行数据交互时,需要在android中开启网络权限,才能够访问到后台数据

    <!-- 允许用户访问网络,这一行要加在<manifest>的下一行 -->
    <uses-permission android:name="android.permission.INTERNET" />
    
android与python服务器利用Okhttp通信 python(view.py)import json from django.shortcuts import render,HttpResponse from .models import Wheel, Nav, Mustbuy, Shop, Mainshow, FoodTypes, Goods # Create your views here. def home(request): ... 阅读详情

相关推荐

Android 客户端与服务器的数据交互实践

以上是 Android 客户端与服务器之间数据交互的三种常用方法。根据你的需求和项目的特点,选择适合的方法进行数据交互。通过合理地设计和实现数据交互模块,可以提高应用的性能和用户体验。在 Android 应用开发过程中,与服务器进行数据交互是一项常见的任务。本文将总结 Android 客户端与服务器之间数据交互的方法和最佳实践,并提供相关源代码。希望本文能够帮助你在 Android 应用开发中顺利进行服务器数据交互。Android 客户端与服务器的数据交互实践。

ByteWhizX的博客 297

android 简单实现Http交互

android 创建一个http交互的服务器 1、创建一个http请求类 2、创建一个service启动http 一、http类:创建一个继承NanoHTTPD 的类 // 所需依赖 implementation 'org.nanohttpd:nanohttpd:2.2.0' import fi.iki.elonen.NanoHTTPD; public class HTTPServer extends NanoHTTPD { public HTTPServer (int port) {

Kstar_Ming的博客 583

字节跳动程序媛教你如何刷算法题:面试手撕代码我就没怕过

本人上一次刷题还是大一的C语言期末考试……但是面试中算法考核截止上岸前一直保持着100%正确率的光辉记录。 本文将给你指明一条刷题的决胜指南。并从算法的重要性、题库的选择以及刷题的三大步骤分别进行讲解,彻底解决你所有关于面试算法所有的困扰。

Stay Hungry Stay Foolish 求知若饥 虚心若愚 2万+

Android服务器与客户端数据交互(Http协议)

Android与服务器通信通常采用的是HTTP通信方式和Socket通信方式,本章主要介绍HTTP协议。

Fighting_67的博客 3346

【JavaSE】之流程控制与方法

Java基础之Java流程控制与方法相关知识介绍~

小新要变强的博客 5795

Dify 第 13 篇 Dify 工作流 详解

工作流通过将复杂任务分解为节点降低复杂度,提升LLM应用的性能和稳定性。Dify工作流分为两类:Chatflow面向对话场景(如客服),支持多轮对话;Workflow面向批处理场景(如翻译),提供逻辑节点实现自动化。核心概念包括节点、变量(系统/会话/环境变量)及应用类型差异:Chatflow支持中间输出和对话历史,Workflow仅支持结束节点输出。系统变量以"sys"开头,用于全局数据传递,不同应用类型变量不同,如Chatflow的sys.query存储用户输入,Workflow的s

甘蓝的专栏 3246

主线程和子线程之间的交互的实现

主线程和子线程之间的交互的实现

Tongseng‘s Blog 2700

自适应控制 (Adaptive Control) 算法详解及案例分析

自适应控制是一种能够在线调整控制器参数以适应系统动态变化的控制方法。其核心思想是通过实时估计系统参数或调整控制器参数,使系统在不确定性或动态变化的环境中仍能保持稳定性和性能。

闲人编程的博客 4082

OkhttpClient的使用详解

** 概述及特性 ** HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttpClient是一个高效的HTTP客户端,它有以下默认特性: 支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接 连接池减少请求延时 透明的GZIP压缩减少响应数据的大小 缓存响应内容,避免一些完全重复的请求 当网络出现问题的时候OkHttp依...

workingman_li的博客 8万+

虚拟电厂功率预测最佳实践白皮书

虚拟电厂(VPP)通过聚合分散的可再生能源资源,为电网提供可观测、可调度和可交易的解决方案。本文提出了一套功率预测方法论,并给出LSTM实现脚本,涵盖资源接入、数据治理、预测模型设计及市场交易闭环。针对风-光-储-负荷混合场景,该方法论强调轻量化部署和滚动优化,可有效提升预测精度和调度收益。未来研究将融合深度气象预报和强化学习,进一步优化VPP的协同调度能力。

专注AI大模型,软件混淆,授权 377

Android性能分析深度指南:Perfetto工具全面解析

本文深入探讨Android性能优化工具Perfetto的应用与实践。作为Google推出的新一代追踪系统,Perfetto整合了CPU调度、内存分配、电池状态等多维度分析功能,通过高性能数据处理和可视化界面帮助开发者定位性能瓶颈。文章系统介绍了Perfetto的架构原理、配置方法和核心功能,包括CPU性能分析、内存泄漏检测等关键技术。通过电商应用卡顿优化的实战案例,展示了如何利用数学建模(如帧时间公式$T_{\text{render}}\leq16.67\text{ms}$)指导性能调优。

郑伟强dev的专栏 144

Android--网络交互(Socket/Http)

第一种:socket(TCP和UDP)         1、Socket:              Socket又称”套接字"              网络上的两个程序通过一个双向的通信链接实现数据的交换,这个连接的一端成为一个socket              应用程序通常通过”套接字”向网络发出请求或者应答网络请         2、网络通信的要素:

zhuozhulin的博客 751

使用GBIF获取生物多样性数据与GIS的结合

随着全球生物多样性的重要性日益凸显,越来越多的研究人员和保护机构开始利用地理信息系统(GIS)来分析和可视化生物多样性数据。GBIF(全球生物多样性信息设施)作为一个全球性的生物多样性数据库,提供了大量的物种分布和分类信息,为研究人员和保护工作者提供了宝贵的数据资源。本文将介绍如何使用GBIF API获取生物多样性数据,并将其与GIS技术相结合,以便更好地理解和研究生物多样性。利用GIS的强大功能,我们可以在地理空间上可视化物种分布、分析物种多样性的空间格局,并为保护生物多样性提供科学依据。

BnxBackend的博客 1762

安卓端和后端数据交互之OkHttp3的使用

接触安卓也有一段时间了。无论前后端数据交互,还是安卓端和后端的数据交互都是一样的道理。最基础的发送json,解析json。 一、最先接触到就是okhttp,今天抽个时间来总结一下okhttp的使用吧。盗用一下网上的介绍(手动滑稽) okhttp简介: HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它...

Mr_Van的博客 4267

ArcGIS笔记2_如何将经纬度WGS84地理坐标系转换为米单位CGCS2000投影坐标系

本博文则主要讲解,如果我们手里拿到的shp文件是在ArcGIS中,如何将经纬度WGS84地理坐标系转换为米单位CGCS2000投影坐标系。

晏长街的博客 4万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

安卓okhttp3与服务器通过json数据交互解析与上传

最近刚好做一个app,然后就不太会json数据交互,就上网查了一些,发现并没有快餐类的代码。所以这里就直接给大家安卓端和服务器端的快餐代码,对初学者还是很有帮助的,大家可以依葫芦画瓢,不喜勿喷首先是安卓端,我主要上传一个User对象,下面是安卓端的代码通过okhttp3,gson编译成json格式上传需要引用compile 'com.google.code.gson:gson:2.8.1'下面是客...

qq_36005199的博客 8453

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android OKHttp的基本使用详解

原文:https://blog.youkuaiyun.com/bzlj2912009596/article/details/81739468 简单说一下学习okhttp的理由 google在Android 6.0中删除了HttpClient的Api,采用的是则是okhttp 高效的使用HTTP,使应用运行更快更省流量 响应缓存数据避免重复网络请求 无缝的支持GZIP来减少数据流量 使用非常简单,请求和响应...

NewActivity的博客 413

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SpringMVC与安卓之间的交互1

springMVC与android的交互

lazyCoder 6599

okhttp3 springboot post 接收与传参

springboot+android 收参 传参

qq_44694843的博客 4742

使用Android API最佳实践 Retrofit OKHttp GSON

http://blog.jobbole.com/65170/

spt_dream的博客 448

Android开发,客户端连接本地服务器,数据存储进Mysql

客户端连接本地服务器,将数据存储进Mysql,实现客户端与服务器的交互。 本博客由一位小白所写,故所有的代码,开源框架都会以萌新的角度讲解,如果有任何的错误,欢迎指正,共同进步。 本博客目的: 实现安卓客户端与本地服务器的数据发送与接收,实现交互。 实现本地服务器与Mysql数据库的连接,与数据存储。 小白说明: 1.安卓sdk已经自带了SQLite数据库,很多本地数据都可以直接存储于这个轻量级数据库,并且有许多优秀的开源框架,如greenDao等。但是,一个非单机的安卓应用是不可能将核心数据存储于本地

qq_41904106的博客 4124

一个安卓APP的功能模块组成

目录 一、网络 二、二维码功能开发 在网上搜索了一下,想找到一篇关于安卓APP的功能模块的文章,发现没有找到,就决定自己写一篇,主要目的是让自己学习新知识、复习旧知识,整合自己的知识库,形成一套具有核心竞争力的属于自己的一套东西。刚开始只是粗略的写一下,后期继续优化补充。 按照自己的粗浅见解,一个基本的安卓APP按照功能模块来说应该包括:网络、图片加载、数据库、第三方类库。接下来按照这几个...

songzi1228的博客 1万+

安卓网络技术

安卓中的网络技术WebViewHTTP访问网络使用URLConnection使用OkHttp解析网络数据解析xml数据解析JSON数据 WebView 在布局文件中使用WebView 在程序中加载WebView控件及内容 在Manifest声明网络权限 <uses-permisiion android:name="android.permission.INTERNET" <Web...

Pedro12的博客 308

OKHttp 使用

对OkHttp的封装和使用 包括上传下载进度的显示

Daemon_Liu 2416

Android网络请求3--解析OkHttp源码

文章目录1. OkHttp简介2. 源码解析2.1 OkHttp请求流程2.1.1 从请求处理开始分析2.1.2 Dispatcher任务调度2.1.3 Interceptor拦截器2.1.3.1 getResponseWithInterceptorChain()方法2.1.3.2 Interceptor源码2.1.3.2.1 ConnectInterceptor2.1.3.2.2 CallSer...

小柯基_littlecogi的博客 500

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

安卓开发连接mysql 数据库

alovelypeach的博客 1248
上一篇: JVisualVM的使用教程
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值