okGo详细使用步骤(一)

2023-11-12

OkGo的使用(一)

详细使用方式可以直接观看源文档wiki 这里不再说明

本文档也是依赖于源文档进行代码测试和理解写的。

写此文档时okgo版本 compile ‘com.lzy.net:okgo:3.0.4’

几个库的介绍


| library名        | 简介         | 作用  |
| ------------- |---------------| ------|
| okgo        | okhttp的封装库           | 访问网络  |
| okrx      | 基于RxJava的扩展项目   |   实现异步操作,简单说切线程 |
| okrx2| 基于RxJava2的扩展项目       |    同上 |
| OkServer | okgo的扩展       |    上传、下载(支持断点续传) |

全局配置

我这边配置比较简单,需要详细配置参考源文档

写个类继承Application 然后在配置清单中添加

android:name=”.MyApp”

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:name=".MyApp"  
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
//        OkGo.getInstance().init(this); //最简单的配置 什么都不需要写 全部使用默认参数
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
//可以使用OkGo内置的log拦截器打印log,如果你觉得不好用,也可以自己写个,这个没有限制。
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("OkGo");
//log打印级别
        loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY);
//log颜色级别
        loggingInterceptor.setColorLevel(Level.INFO);
        builder.addInterceptor(loggingInterceptor);
        //全局的读取超时时间
        builder.readTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
//全局的写入超时时间
        builder.writeTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
//全局的连接超时时间
        builder.connectTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
        /*
     *  connectTimeout:指客户端和服务器 建立通道 的时间
        writeTimeout:客户端把数据写出去需要的时间
        readTimeout:客户端等待服务器返回数据的时间
        * */
        //使用内存保持cookie,app退出后,cookie消失
        builder.cookieJar(new CookieJarImpl(new MemoryCookieStore()));

        OkGo.getInstance().init(this)//必须调用初始化
                .setOkHttpClient(builder.build())  //建议设置OkHttpClient,不设置将使用默认的
                .setRetryCount(1); //超时重连,本身1次,我这边设置1次,总共2次访问
    }
}

最基本的网络访问示例

本来想用公司的接口写个登录验证demo
不过还要看接口文档还要数据加密什么的 就简单的网上找了一个天气接口

示例中用了butterknife 你可以findviewbyid来找控件

public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";

private static String address = “http://www.weather.com.cn/data/sk/101010100.html“;
//@BindView(R.id.met_user)
//MaterialEditText metUser;
//@BindView(R.id.met_psd)
//MaterialEditText metPsd;
@BindView(R.id.submit)
Button submit;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    long id = Thread.currentThread().getId();
    Log.e(TAG,id+"");
    ButterKnife.bind(this);
}

@OnClick(R.id.submit)
public void onViewClicked() {
    //String user = metUser.getText().toString();
    //String psd = metPsd.getText().toString();
    //if(user.isEmpty()||psd.isEmpty()){
    //    return;
    //}
    // TODO: 2017/8/14 提交数据给服务器
    OkGo.<String>get(address)
            .execute(new StringCallback() {
                @Override
                public void onSuccess(Response<String> response) {
                    long id = Thread.currentThread().getId();//从打印日志可以看到网络结果回调发生在主线程 线程id=1
                    Log.e(TAG,id+" : "+response.body());
                }
                //这个方法默认是空实现,需要自己重写出来,不然你访问出了错你只能打印库中给你提供的打印日志
                @Override
                public void onError(Response<String> response) {
                    super.onError(response);
                }
            });
}

}

运行完demo 点击一下button

E/MainActivity: 1 : {"weatherinfo":{"city":"北京","cityid":"101010100","temp":"18","WD":"东南风","WS":"1级","SD":"17%","WSE":"1","time":"17:05","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB","njd":"暂无实况","qy":"1011","rain"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

okGo详细使用步骤(一) 的相关文章

  • 关于 inflater.inflate Android 文档的困惑

    我正在研究此链接中的片段 http developer android com guide components fragments html http developer android com guide components frag
  • 围绕二维坐标系中的特定点缩放

    Below is an image my coordinate system 我想做的是 我想开始围绕画布中的特定点进行缩放 缩放工作正常 但我的问题是我不知道如何计算缩放时移动画布的量 请注意 我我没有使用canvas scale 我只是
  • 视图绑定对应用程序大小的影响有多大?

    View Binding 按照文档的规定 为每个XML元素生成一个Binding类 以方便访问和检查 并减轻如下的时间负担 findViewById 虽然findViewById通过更昂贵的关联搜索进行操作 由于映射 绑定应该 直接 访问
  • Android 通知 - 显示完整消息

    我的 Android 应用程序必须能够向一大群人发送简短的警报 执行此操作的明显位置是在通知中心 完整的通知毫无问题地显示在股票代码中 但在通知中心 用户只能看到前几个单词 然后是省略号 通知并不长 最多也就10 15个字 如何使文本自动换
  • 对齐卡片视图中的项目

    我希望我的卡片如下所示 我保持这样的布局
  • 如何在默认浏览器或webview中打开按钮点击url

    我怎样才能打开一个网址webview或者点击按钮后在默认浏览器中 目前 当我单击btn1按钮 它提示我从手机中选择一个浏览器 我想在默认浏览器或其他浏览器中打开此网址webview 这是我的java代码 public class myact
  • AdMob 插页式广告仅显示一次

    当广告在一个会话内第二次或第三次打开时 LogCat 会显示错误消息 尝试使用不同的广告管理器启动新的 AdActivity 我通过应用程序主屏幕的 on resume 方法中的意图启动插页式广告 Override public void
  • Flutter - 选择 TextFormField 时键盘不显示

    我目前遇到一个问题 当我选择任何一个时 键盘不会出现TextFormFielda 内的小部件Form小部件 这是表单的代码 位于我的内部CreateAccountForm有状态的小部件 import package flutter mate
  • 输入连接-如何删除选定的文本?

    我为 Android 制作了一个自定义键盘 当我按下键盘的退格按钮时 我使用 getCurrentInputConnection deleteSurroundingText 1 0 从输入字段中删除一个字母 但是 当我选择一些文本然后按退格
  • 无法通过 Android 应用程序访问我的笔记本电脑的本地主机

    因此 我在发布此内容之前做了一项研究 我发现的解决方案不起作用 更准确地说 连接到我的笔记本电脑的 IPv4192 168 XXX XXX 没用 连接到10 0 2 2 加上端口 不起作用 我需要测试使用 Django Rest 框架构建的
  • 开始使用 Honeycomb 进行 Android 开发 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • android中如何布局支持各种屏幕?

    我正在使用gridview开发图库视图 在小屏幕中我的布局设计修复得很好 但大屏幕没有我的设计 在大屏幕中有一些空格 加载更多图片 按钮参考图2 我该如何解决这个问题 我的清单文件添加了这一行以支持各种屏幕 请给我一些示例代码
  • Webview 电子邮件链接 (mailto)

    我有一个视图并查看该网站有用于发送电子邮件的 malito 代码 当我打开链接时 会出现错误 我希望当我打开链接时打开 Gmail 应用程序或其他电子邮件应用程序 感谢所有帮助者 public class teacher extends A
  • 如何在kotlin中使用Coroutine每秒调用一个函数

    我刚刚创建了一个应用程序 其中我的函数 getdata 每秒调用一次以从服务器获取新数据 而 updateui 函数将更新 UI 中的视图 我在我的应用程序中不使用任何异步任务或协程 我想这样做 请告诉我我怎样才能做到这一点 这是我的代码
  • 如何使用百分比进行android布局?

    我们如何使用百分比android视图元素的值 像这样的东西
  • mgwt - 以编程方式改变方向

    是否可以在 gwt mgwt 应用程序中更改强制执行特定的屏幕方向 可以说我希望用户始终以横向模式使用应用程序 这取决于 是作为phonegap应用程序 而不是在浏览器内部 如果您作为 Web 应用程序运行 则不需要t get any co
  • 在 Android Studio 4.0(Canary) 中找不到预览窗口在哪里

    我正在浏览有关在 Android Studio 4 0 Canary 中运行的 Jetpack 的教程 请参阅下面的链接文章 https developer android com jetpack compose tutorial http
  • 从包中发布的错误通知无法展开 RemoteViews

    我有个问题 有时我的服务会被这个 logcat 强制关闭 03 26 20 44 44 849 E AndroidRuntime 12080 FATAL EXCEPTION main 03 26 20 44 44 849 E Android
  • 如何减少导航图标和工具栏标题之间​​的差距?

    我的问题是导航抽屉图标和工具栏标题之间 有多余的空间 示例图像如下 工具栏的xml视图是
  • Libgdx 和 Google 应用内购买结果

    我遵循了这些指示 https github com libgdx libgdx wiki Interfacing with platform specific code使用 ActionResolver 接口集成 Libgdx 和原生 An

随机推荐

  • 蓝桥杯 排列序数

    标题 排列序数 X星系的某次考古活动发现了史前智能痕迹 这是一些用来计数的符号 经过分析它的计数规律如下 为了表示方便 我们把这些奇怪的符号用a q代替 abcdefghijklmnopq 表示0 abcdefghijklmnoqp 表示1
  • Elasticsearch分布式全文搜索引擎

    文章目录 一 Elasticsearch 是什么 二 ES安装 1 安装软件 2 启动失败问题解决 三 ES入门 1 数据格式 2 索引 3 文档操作 4 映射操作 5 高级查询 一 Elasticsearch 是什么 Elasticsea
  • 【华为OD机试】最小传输时延I【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 某通信网络中有N个网络结点 用1到N进行标识 网络通过一个有向无环图表示 其中图的边的值表示结点之间的消息传递时延 现给定相连节点之间的时延列表times i u v
  • 114-----JS基础-----事件的委派(实际是利用了事件的冒泡)

    一 代码 不难 事件的委派就是利用了事件的冒泡
  • c语言中的字符数组和字符串之间的关系

    一 字符串的结束标志 1 很多时候我们都是可以看到相关的内容就是 使用数组来存储字符串 也就是我们经常会使用到sizeof 和这个函数 而 这个函数只是求出当前该数组的最大容量 而不是数组中实际存放的内容 我们一般都是需要使用 0 来表示字
  • ERP系统

    ERP系统是企业资源计划 Enterprise Resource Planning 的简称 是指建立在信息技术基础上 集信息技术与先进管理思想于一身 以系统化的管理思想 为企业员工及决策层提供决策手段的管理平台 它是从MRP 物料需求计划
  • linux如何解压.zip文件

    安装zip yum y install unzip zip 1 解压shop zip unzip shop zip 2 将shop文件夹压缩为old shop zip zip old shop zip shop
  • 数据可视化作业-使用RMarkdown撰写实验报告

    US Stock data visualization 研究背景 近年来 M股市场的重要性和影响力不断增加 成为全球投资者关注的焦点之一 美股市场的发展和表现对全球经济和金融市场产生了深远的影响 作为全球最大的股票市场之一 M国股市为投资者
  • centos7开启关闭3306端口

    背景 闲来想着用navicat访问下centos上的数据库 发现连接不上 尴尬 如图 一直在连接 然后报了一个unknown error 解决 1 查看一下防火墙状态 root VM 0 15 centos systemctl status
  • 看完这篇 教你玩转渗透测试靶机Vulnhub——HarryPotter:Nagini

    Vulnhub靶机HarryPotter Nagini渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 漏洞发现 SSRF漏洞利用 网站后台GetShell SSH公
  • 通过HttpClient以post方式发送https/http请求,请求及返回参数格式为json和xml两种方式,解决https加ip直接访问的ssl签名认证问题

    最近项目中需要向外部服务发送https请求 但是外部服务测试环境提供的访问地址为https加ip 端口的访问方式 由于SSL签名认证问题 网上搜索大多说是因为https后面设计为跟域名绑定访问 无法访问 后来尝试网上各大神的解决方案 完美解
  • Java获取当天,本周,本月,本季度,本年起始时间工具类

    import java time import java time format DateTimeFormatter import java util Date import java util Locale jdk8 获取当天 本周 本月
  • Linux静默安装Oracle12c过程笔记

    Linux静默安装Oracle12c过程笔记 1 关闭防火墙 禁止防火墙开机自启 关闭防火墙 systemctl stop firewalld service 禁止防火墙开机启动 systemctl disable firewalld se
  • 订单、支付、退款、发货、退货等编号自动生成类

    在商城网站中 订单编号的自动生成 ERP中各个单据的编号自动生成 都可以按照一下的方式来自动生成 第一步 定义常量订单编号前缀 订单编号起始数 订单编号步长 public static final String ORDER SN PREFI
  • 固定资产批导程序

    Responsibility Program Name ZFIC001 Date written Author s name SongQiong Last update Program title 固定资产期初批量导入程序 Project
  • 【基础知识】5、相机内外参矩阵和坐标变换

    文章目录 1 世界坐标系和相机坐标系的关系 从世界坐标系到相机坐标系 涉及到物体的旋转和平移 绕着不同的坐标轴旋转不同的角度 得到相应的旋转矩阵 如下图所示 于是 从世界坐标系到相机坐标系 涉及到旋转和平移 其实所有的运动也可以用旋转矩阵和
  • npcap关闭_npcap是什么软件

    npcap是一个网络数据包抓包工具 是WinPcap的改进版 它支持NDIS 6技术 只允许管理员Administrator 访问Npcap 与WinPcap兼容或并存两种模式 支持Windows平台的回环数据包采集和发送 本教程操作环境
  • 性能测试_JMeter中你可能会忽略的细节点-2

    目录 CSV参数化有什么缺陷 在哪里可以体验到 JDBC请求报错Variable Name must not be null in JDBC Request 助攻机tar包和zip包要注意的事项 文件夹的执行权限 JMeter分布式主机假死
  • ACLR指标

    文章目录 一 ACLR含义 二 ACLR来源 一 ACLR含义 ACLR Adjacent Channel Leakage Power Ratio 测试目的 避免对邻近信道产生干扰 LTE和ACLR测试除了需要测试自身带宽相同的邻信道泄漏功
  • okGo详细使用步骤(一)

    OkGo的使用 一 详细使用方式可以直接观看源文档wiki 这里不再说明 本文档也是依赖于源文档进行代码测试和理解写的 写此文档时okgo版本 compile com lzy net okgo 3 0 4 几个库的介绍 library名 简