Android_OkHttp封装

android okhttp3与HttpURLConnection的封装 okhttp3 compile 'com.squareup.okhttp3:okhttp:3.2.0' okhttp3方法封装类 public class OKhttp { //设置一个接口 提供外部数据 类似handle功能 private OKhttp.OnOkButtonFireListener okListener; public interface ... 阅读详情

一:定义一个接口里面有请求成功与失败的方法

public interface CallBack {
    void onSuccess(Object o);
    void onFailed(Exception e);
}

二:工具类中

package activity.example.com.httputils;

import android.os.Handler;

import com.google.gson.Gson;

import java.io.IOException;
import java.util.Map;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/**
 * Created by 壹颗大金星 on 2017/11/9.
 */

public class HttpUtils {
    private static volatile HttpUtils instance;

    private static Handler handler = new Handler();

    private HttpUtils(){

    }
    public static HttpUtils getInstance() {
        if (instance == null) {
            synchronized (HttpUtils.class) {
                if (instance == null) {
                    instance = new HttpUtils();
                }
            }
        }
        return instance;
    }
    //get请求
    public void get(String url, Map<String,String> map, final CallBack callBack, final Class c){
        //对url和参数做拼接处理
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append(url);
        //判断是否存在?   if中是存在
        if(stringBuffer.indexOf("?")!=-1 ){
            //判断?是否在最后一位    if中是不在最后一位
            if(stringBuffer.indexOf("?")!=stringBuffer.length()-1){
                stringBuffer.append("&");
            }
        }else{
            stringBuffer.append("?");
        }
        for(Map.Entry<String,String> entry:map.entrySet()){
            stringBuffer.append(entry.getKey())
                        .append("=")
                        .append(entry.getValue())
                        .append("&");
        }
	//判断是否存在&   if中是存在
	if(stringBuffer.indexOf("&")!=-1){
        stringBuffer.deleteCharAt(stringBuffer.lastIndexOf("&"));
	}


        //1:创建OkHttpClient对象
        OkHttpClient okHttpClient = new OkHttpClient();
        //2:创建Request对象
        final Request request = new Request.Builder()
                .get()
                .url(stringBuffer.toString())
                .build();
        //3:创建Call对象
        Call call = okHttpClient.newCall(request);
        //4:请求网络
        call.enqueue(new Callback() {
            //请求失败
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callBack.onFailed(e);
                    }
                });
            }
            //请求成功
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String result = response.body().string();
                //拿到数据解析
                final Object o = new Gson().fromJson(result, c);
                //当前是在子线程,回到主线程中
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        //回调
                        callBack.onSuccess(o);
                    }
                });
            }
        });

    }
    //post请求
    public void post(String url, Map<String,String> map, final CallBack callBack, final Class c){
        //1:创建OkHttpClient对象
        OkHttpClient okHttpClient = new OkHttpClient();
        //2:提供post请求需要的body对象
        FormBody.Builder builder = new FormBody.Builder();
        for(Map.Entry<String,String> entry:map.entrySet()){
            builder.add(entry.getKey(),entry.getValue());
        }
        FormBody body = builder.build();
        //3:创建Request对象
        final Request request = new Request.Builder()
                .post(body)
                .url(url)
                .build();
        //4:创建Call对象
        Call call = okHttpClient.newCall(request);
        //5:请求网络
        call.enqueue(new Callback() {
            //请求失败
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callBack.onFailed(e);
                    }
                });
            }
            //请求成功
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String result = response.body().string();
                //拿到数据解析
                final Object o = new Gson().fromJson(result, c);
                //当前是在子线程,回到主线程中
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        //回调
                        callBack.onSuccess(o);
                    }
                });
            }
        });
    }

}



三:MainActivity引用

package activity.example.com.httputils;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    private Button get;
    private TextView text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        get = (Button)findViewById(R.id.get);
        text = (TextView)findViewById(R.id.text);
        get.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Map<String,String> map = new HashMap<String, String>();
                map.put("mobile","00000000000");
                map.put("password","123456");
                HttpUtils.getInstance().get("http://120.27.23.105/user/login", map,
                        new CallBack() {
                            @Override
                            public void onSuccess(Object o) {
                                //o请求回来的数据,已经解析完
                                final User user = (User)o;
                                //请求出来的数据展示到textview上
                                text.setText(user.getMsg());
                            }

                            @Override
                            public void onFailed(Exception e) {

                            }
                        },User.class);//最后一个参数是解析的实体类
            }
        });
    }
}


Android 对okhttp的封装 不废话,需求:根据服务器API封装网络请求,怎么办? 简单封装okhttp的get,post,put,delete请求: PersistentCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(getApplicationCo... 阅读详情

相关推荐

Android App网络框架封装实战:基于OkHttp

NetManager的请求方法需要遵循一种统一的模式,以确保调用者可以以一致的方式发起请求。例如,所有的请求方法可能都接受一个配置对象作为参数,该对象包含URL、请求头、请求体等信息。// 示例代码// ... 其他HTTP方法// 请求配置示例// 构造方法、getter和setter省略。

weixin_35750483的博客 920

Android -- OkHttp的简单使用和封装

首选我们知道,当接口请求成功或者失败的时候我们需要将这个信息通知给用户,那么我们就需要创建一个抽象类RequestCallBack,请求前、成功、失败、请求后这几个方法,创建OnBefore()、OnAfter()、OnError()、OnResponse()对应。在创建Manager对象的时候我们要把OkHttp的一些参数配置一下,顺便一提一下,由于我们我们异步get、post方法是运行在子线程中,所以这里我们添加了分发的 Handler mDelivery;3,OkHttp的封装。

鸿蒙的技术博客 3162

Android开发中封装OkHttp工具类的实践指南

OkHttp是Java和Kotlin中广泛使用的一个强大的HTTP客户端,适用于Android和Java应用程序。它支持HTTP/2和连接池,能够显著提升网络请求的效率。在这一章中,我们将探讨OkHttp的基础知识,并对常用的工具类进行封装。封装工具类不仅可以提高代码的复用性,而且能简化网络请求的实现。拦截器是OkHttp中非常强大的组件,它允许我们在请求发送之前或响应接收之后进行拦截,并对请求和响应对象进行修改。这使得我们可以实现如日志记录、请求/响应处理、错误处理等高级功能:@Override。

weixin_35750747的博客 1066

安卓okhttp网络请求封装使用

安卓网络请求封装及其使用

qq_41733851的博客 2573

Android-OkHttp封装

调用方法传入url和一个类型,请求后,直接将‘返回的数据’映射到‘该类型的对象’中,并返回相应的请求状态

AI智能体评估基准AgentBench:从原理到实战的完整指南

在人工智能领域,智能体(AI Agent)的评估是衡量其实际应用能力的关键环节。评估基准通过设计标准化的测试任务,系统性地检验智能体的推理、规划和工具使用等核心能力。其技术价值在于为模型迭代和产品选型提供了客观、可复现的量化依据,能有效推动技术从演示走向工程落地。典型的应用场景包括模型能力评测、智能体框架对比以及具体应用(如自动化运维、智能客服)的性能验证。本文聚焦于清华团队推出的AgentBench,它作为一个多维度的综合评估套件,涵盖了从操作系统、数据库操作到网页浏览、数字卡牌游戏等八个贴近真实世界的任

weixin_27207591的博客 599

Android中封装OkHttp,处理网络请求

Android中封装OkHttp,处理网络请求

zhangsp_dev_dxdc的博客 1130

鸿蒙进阶——HDI及IDL硬件接口IPC框架小结

HDI(Hardware Device Interface):OpenHarmony硬件设备接口,定义系统中跨进程通信的接口,实现服务间的跨进程通信

最美不过,心中有梦,身旁有你! 3902

安卓开发之OkHttp的请求封装

文章预览一、前言二、封装2.1、Api类2.2、ApiConfig类2.3、TtitCallback接口类三、使用 一、前言 okHttp的请求封装就是对okHttp的post或者get的网络请求方法进行封装,以便后面的便捷调用 二、封装 这里仅对post方法进行封装,其它的一样的道理 2.1、Api类 package cn.zzuli.myapp.api; import android.util.Log; import java.io.IOException; import okhttp3.Cal

niulinbiao的博客 522

用Matlab系统辨识工具箱搞定温控系统建模:从阶跃响应到传递函数(附完整代码)

本文详细介绍了如何使用Matlab系统辨识工具箱进行温控系统建模,从阶跃响应数据采集到传递函数参数辨识的全过程。通过实际案例和完整代码,帮助工程师快速掌握PID控制参数整定技巧,提升温控系统设计效率。特别适合单片机开发者和自动化控制工程师参考。

weixin_30736301的博客 309

Isaac Sim仿真平台学习(2)系统架构

isaac sim系统架构

weixin_75067193的博客 2698

android okhttp 封装,Android OkHttp的简单使用和封装详解

Android OkHttp的简单使用和封装详解1,昨天把okHttp仔细的看了一下,以前都是调用同事封装好了的网络框架,直接使用很容易,但自己封装却不是那么简单,还好,今天就来自我救赎一把,就和大家写写从最基础的OKHttp的简单get、post的使用,再到它的封装。2,OkHttp的简单使用首先我们创建一个工程,并在布局文件中添加三个控件,TextView(用于展示获取到json后的信息)、B...

weixin_34847560的博客 758

水环境综合管控平台完整方案

水环境综合管控平台项目(2026-2027)摘要 项目概况: 总投资5亿元的水环境综合管控平台项目,是国家数字政府与生态文明建设战略的重要实践。项目严格遵循2026年最新政策标准,整合物联网、大数据和AI技术,构建覆盖水质监测、污染溯源、生态保护等全流程的智能管控体系。 核心内容: 系统架构:采用五层设计(基础设施层至展示层),集成10大核心功能模块,包括水质动态监测、污染智能溯源和生态评估预警系统; 技术创新:运用2026年最新边缘计算和数字孪生技术,实现毫秒级水质异常响应和三维流域仿真; 实施规划:分7

随读手记 403

Android网络请求——OKHttp封装+GSON封装

封装好的OkHttp,GSON方便平时使用 public class OkHttpUtil { public static void GETOkHttpRequest(String address,okhttp3.Callback callback){ OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(addres

haazzz的博客 700

损失函数大汇总(八)(IoU Loss附公式推导与代码)

本文详细介绍了IoU Loss及其在图像分割中的应用。IoU(交并比)是衡量预测区域与真实区域重叠程度的指标,IoU Loss定义为1-IoU,直接优化区域重叠质量。文章推导了IoU的数学表达式和梯度计算,分析了其函数特性:全局耦合梯度、对漏检误检的双重惩罚、适合类别不平衡任务。与Dice Loss相比,IoU更强调覆盖质量而非相似度。实际应用中IoU Loss常与BCE组合使用,前者保证训练稳定性,后者优化整体区域质量。文章还提供了IoU Loss的代码实现,适用于二值分割、小目标提取等场景,特别当任务评

悦学共鸣,温柔以待,汇聚光芒,共同成长 414

SAP 管道业务(Pipeline Procurement)是用于水、电、气等不间断供应且无库存管理的物料采购场景,核心是消耗即记账、无库存持有,通过 MM-FI 集成实现实时负债与成本过账

摘要:SAP管道业务适用于水电气等无库存管理的物料采购场景,通过消耗即记账机制实现实时负债与成本过账。核心配置包括创建PIPE物料类型(无库存管理)、维护管道采购信息记录、配置自动记账科目等。SAP PO可集成外部系统实现流程自动化,如自动过账提取数据、发票校验等。实施要点在于物料主数据、信息记录和科目确定的精准配置,以及PO接口的可靠对接,最终构建端到端的高效采购与财务结算体系。

金牌架构师 748

android okhttp封装步骤,Android OkHttp的简单使用和封装详解

Android OkHttp的简单使用和封装详解1,昨天把okHttp仔细的看了一下,以前都是调用同事封装好了的网络框架,直接使用很容易,但自己封装却不是那么简单,还好,今天就来自我救赎一把,就和大家写写从最基础的OKHttp的简单get、post的使用,再到它的封装。2,OkHttp的简单使用首先我们创建一个工程,并在布局文件中添加三个控件,TextView(用于展示获取到json后的信息)、B...

weixin_39615643的博客 426

ABAP CURR Data Type 深度解析与实战案例

CURR 数据类型是 SAP ABAP 中为处理货币金额而设计的一种特殊数据类型。CURR 数据类型能够自动根据关联的货币代码字段(例如 WAERS)确定小数位数,从而保证金额数据的精度与正确性。CURR 类型通常在 SAP 数据字典中使用,常见于各类业务数据表中,如会计凭证、销售订单等场景中,用于存储货币金额。CURR 数据类型底层实现上类似于 DEC 数据类型,但其特别之处在于与货币代码字段的绑定,这使得金额的格式化和显示可以自动匹配相应的货币规则。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 877

Android OkHttp的封装使用

1.先看原始的请求过程 以下是请求过程的使用示例。 private void useOkHttpSendRequest(){ OkHttpClient client = new OkHttpClient(); RequestBody body = new FormBody.Builder() .add("InfoOne", mInfoOneEditText.getText()...

达尔文的猹的博客 1077

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android 基于okhttp的socket封装

代码如下。

u013519290的博客 1182

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android 一个改善的okHttp封装库

);

2501_90392287的博客 824

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

安卓OKhttp请求封装

  目前安卓开发中使用的网络工具为OKhttp,但是okhttp的使用还不是很方便,在okhttp的基础上再对请求进行封装会极大的方便网络调用。   下面直接上代码。 请求封装 public class HttpUtil { public static void sendOKHttpRequest(String address, Map<String,Strin...

weixin_30640291的博客 151

android okHttp网络请求封装

okHttp使用

u013519290的博客 2262

【Android】OkHttp的使用及封装

OkHttp是一款高性能HTTP客户端库,支持同步/异步请求,提供GET/POST等请求方式。文章详细介绍了OkHttp的基本使用步骤,包括依赖添加、客户端创建、请求构建和响应处理。重点讲解了异步GET请求的实现,以及不同数据格式(纯文本、JSON、表单、文件等)的POST请求构建方法,包括如何设置MediaType和RequestBody。文中还强调了异步请求的回调处理需注意线程切换问题,并提供了错误处理和UI更新的示例代码。

2302_79323248的博客 664

【Android】OkHttp3总结与封装

开始使用 在app目录下的build.gradle中添加依赖: implementation 'com.squareup.okhttp3:okhttp:3.13.1' implementation 'com.squareup.okio:okio:2.2.2' GET方法 OkHttpClient client = new OkHttpClient.Builder().build(); Request.Builder builder = new Request.Builder().url(url)...

深蓝旭的博客 926

Android简易OkHttp封装

一个简易的OkHttp封装 在android程序中,通常为了保证软件重要数据的实时性和我们数据的安全性,我们通常采用的方式是通过网络,从服务端去获取、修改我们的数据,而这就需要用到我们的HTTP数据请求。 目前最常见的两种请求分别是谷歌自己的HttpURLConnection,以及我认为目前最好用的请求框架OkHttp,而下面我带来的就是一个基于OkHttp框架的简易封装。 需要用到的第三方库 在...

RIGHT_LEFT_LONG的博客 431
上一篇: Android_第三方登录
下一篇: Android_RecyclerView的介绍与使用
绅V科技
博客等级 码龄9年 61粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值