android快速网络请求之android-networking

今天介绍一个知道的人不多的库,写个简单的页面什么的。用起来很爽?如果你疑惑那么多开源的网络库为啥不用?
因为这个简单方便。拿来就用。经过这几天的实践。确实可以。推荐一下

如果你需要 GITHUB

首先。引入依赖

implementation 'com.amitshekhar.android:android-networking:1.0.2'

添加权限:

<uses-permission android:name="android.permission.INTERNET" />

然后你可以选择在app的onCreate种注册,当然。也可以在Application里

AndroidNetworking.initialize(getApplicationContext());

然后就是正题了:

通过一些自定义对其进行初始化,因为它使用OkHttp作为网络层,您可以在初始化时传递自定义 okHttpClient。

// Adding an Network Interceptor for Debugging purpose :
OkHttpClient okHttpClient = new OkHttpClient() .newBuilder().addNetworkInterceptor(new StethoInterceptor()).build();
AndroidNetworking.initialize(getApplicationContext(),okHttpClient);  

使用带有 Jackson Parser 的快速 Android 网络

implementation 'com.amitshekhar.android:jackson-android-networking:1.0.2'
// Then set the JacksonParserFactory like below
AndroidNetworking.setParserFactory(new JacksonParserFactory());

如果你要使用GET请求

AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllUsers/{pageNumber}").addPathParameter("pageNumber", "0").addQueryParameter("limit", "3").addHeaders("token", "1234").setTag("test").setPriority(Priority.LOW).build().getAsJSONArray(new JSONArrayRequestListener() {@Overridepublic void onResponse(JSONArray response) {// do anything with response}@Overridepublic void onError(ANError error) {// handle error}});             

如果你要使用POST请求

AndroidNetworking.post("https://fierce-cove-29863.herokuapp.com/createAnUser").addBodyParameter("firstname", "Amit").addBodyParameter("lastname", "Shekhar").setTag("test").setPriority(Priority.MEDIUM).build().getAsJSONObject(new JSONObjectRequestListener() {@Overridepublic void onResponse(JSONObject response) {// do anything with response}@Overridepublic void onError(ANError error) {// handle error}});

您还可以像这样在 POST 请求中发布 java 对象、json、文件等。

User user = new User();
user.firstname = "Amit";
user.lastname = "Shekhar";AndroidNetworking.post("https://fierce-cove-29863.herokuapp.com/createUser").addBodyParameter(user) // posting java object.setTag("test").setPriority(Priority.MEDIUM).build().getAsJSONArray(new JSONArrayRequestListener() {public void onResponse(JSONArray response) {// do anything with response}public void onError(ANError error) {// handle error}});JSONObject jsonObject = new JSONObject();
try {jsonObject.put("firstname", "Amit");jsonObject.put("lastname", "Shekhar");
} catch (JSONException e) {e.printStackTrace();
}AndroidNetworking.post("https://fierce-cove-29863.herokuapp.com/createUser").addJSONObjectBody(jsonObject) // posting json.setTag("test").setPriority(Priority.MEDIUM).build().getAsJSONArray(new JSONArrayRequestListener() {public void onResponse(JSONArray response) {// do anything with response}public void onError(ANError error) {// handle error}});AndroidNetworking.post("https://fierce-cove-29863.herokuapp.com/postFile").addFileBody(file) // posting any type of file.setTag("test").setPriority(Priority.MEDIUM).build().getAsJSONObject(new JSONObjectRequestListener() {public void onResponse(JSONObject response) {// do anything with response}public void onError(ANError error) {// handle error}});               

将它与您自己的 JAVA 对象一起使用 - JSON Parser

/*--------------Example One -> Getting the userList----------------*/
AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllUsers/{pageNumber}").addPathParameter("pageNumber", "0").addQueryParameter("limit", "3").setTag(this).setPriority(Priority.LOW).build().getAsObjectList(User.class, new ParsedRequestListener<List<User>>() {@Overridepublic void onResponse(List<User> users) {// do anything with responseLog.d(TAG, "userList size : " + users.size());for (User user : users) {Log.d(TAG, "id : " + user.id);Log.d(TAG, "firstname : " + user.firstname);Log.d(TAG, "lastname : " + user.lastname);}}@Overridepublic void onError(ANError anError) {// handle error}});
/*--------------Example Two -> Getting an user----------------*/
AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAnUserDetail/{userId}").addPathParameter("userId", "1").setTag(this).setPriority(Priority.LOW).build().getAsObject(User.class, new ParsedRequestListener<User>() {@Overridepublic void onResponse(User user) {// do anything with responseLog.d(TAG, "id : " + user.id);Log.d(TAG, "firstname : " + user.firstname);Log.d(TAG, "lastname : " + user.lastname);}@Overridepublic void onError(ANError anError) {// handle error}}); 
/*-- Note : YourObject.class, getAsObject and getAsObjectList are important here --*/              

从服务器下载文件

AndroidNetworking.download(url,dirPath,fileName).setTag("downloadTest").setPriority(Priority.MEDIUM).build().setDownloadProgressListener(new DownloadProgressListener() {@Overridepublic void onProgress(long bytesDownloaded, long totalBytes) {// do anything with progress  }}).startDownload(new DownloadListener() {@Overridepublic void onDownloadComplete() {// do anything after completion}@Overridepublic void onError(ANError error) {// handle error    }});        

上传文件

AndroidNetworking.upload(url).addMultipartFile("image",file)    .addMultipartParameter("key","value").setTag("uploadTest").setPriority(Priority.HIGH).build().setUploadProgressListener(new UploadProgressListener() {@Overridepublic void onProgress(long bytesUploaded, long totalBytes) {// do anything with progress }}).getAsJSONObject(new JSONObjectRequestListener() {@Overridepublic void onResponse(JSONObject response) {// do anything with response                }@Overridepublic void onError(ANError error) {// handle error }}); 

在另一个线程执行器中获取响应和完成
(注意:错误和进度将始终在应用程序的主线程中返回)

AndroidNetworking.upload(url).addMultipartFile("image",file)  .addMultipartParameter("key","value")  .setTag("uploadTest").setPriority(Priority.HIGH).build().setExecutor(Executors.newSingleThreadExecutor()) // setting an executor to get response or completion on that executor thread.setUploadProgressListener(new UploadProgressListener() {@Overridepublic void onProgress(long bytesUploaded, long totalBytes) {// do anything with progress }}).getAsJSONObject(new JSONObjectRequestListener() {@Overridepublic void onResponse(JSONObject response) {// below code will be executed in the executor provided// do anything with response                }@Overridepublic void onError(ANError error) {// handle error }}); 

如果请求已完成给定阈值,则设置不取消请求的百分比阈值

AndroidNetworking.download(url,dirPath,fileName).setTag("downloadTest").setPriority(Priority.MEDIUM).setPercentageThresholdForCancelling(50) // even if at the time of cancelling it will not cancel if 50% .build()                                 // downloading is done.But can be cancalled with forceCancel..setDownloadProgressListener(new DownloadProgressListener() {@Overridepublic void onProgress(long bytesDownloaded, long totalBytes) {// do anything with progress  }}).startDownload(new DownloadListener() {@Overridepublic void onDownloadComplete() {// do anything after completion}@Overridepublic void onError(ANError error) {// handle error    }});   

取消请求。

AndroidNetworking.cancel("tag"); // All the requests with the given tag will be cancelled.
AndroidNetworking.forceCancel("tag");  // All the requests with the given tag will be cancelled , even if any percent threshold is// set , it will be cancelled forcefully. 
AndroidNetworking.cancelAll(); // All the requests will be cancelled.  
AndroidNetworking.forceCancelAll(); // All the requests will be cancelled , even if any percent threshold is// set , it will be cancelled forcefully.

从网络加载图像到 ImageView

  <com.androidnetworking.widget.ANImageViewandroid:id="@+id/imageView"android:layout_width="100dp"android:layout_height="100dp"android:layout_gravity="center" />imageView.setDefaultImageResId(R.drawable.default);imageView.setErrorImageResId(R.drawable.error);imageView.setImageUrl(imageUrl);          

使用某些指定参数从 url 获取位图

AndroidNetworking.get(imageUrl).setTag("imageRequestTag").setPriority(Priority.MEDIUM).setBitmapMaxHeight(100).setBitmapMaxWidth(100).setBitmapConfig(Bitmap.Config.ARGB_8888).build().getAsBitmap(new BitmapRequestListener() {@Overridepublic void onResponse(Bitmap bitmap) {// do anything with bitmap}@Overridepublic void onError(ANError error) {// handle error}});

为特定请求自定义 OkHttpClient

OkHttpClient okHttpClient = new OkHttpClient().newBuilder().addInterceptor(new GzipRequestInterceptor()).build();AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllUsers/{pageNumber}").addPathParameter("pageNumber", "0").addQueryParameter("limit", "3").addHeaders("token", "1234").setTag("test").setPriority(Priority.LOW).setOkHttpClient(okHttpClient) // passing a custom okHttpClient .build().getAsJSONArray(new JSONArrayRequestListener() {@Overridepublic void onResponse(JSONArray response) {// do anything with response}@Overridepublic void onError(ANError error) {// handle error}});

想更多了解。自己去看吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/207053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 数据迁移要点

目录 1. 相同版本的迁移 2. 不用版本的迁移 3. 不同数据库的迁移 数据库迁移就是把数据从一个系统移动到另一个系统上&#xff0c;迁移过程其实就是在源数据库备份和目标数据库恢复的过程组合。迁移的原因是多种多样的&#xff0c;比如&#xff1a; 需要安装新的数据库服务…

elasticsearch中LessThen遇到的坑

开发中&#xff0c;使用到LessThen-小于某个参数的逻辑查询&#xff0c;如下&#xff1a; /// <summary> /// 查询状态已发布&#xff08;状态小于2&#xff09;的政策要闻分页 /// </summary> /// <param name"input"></param> /// <re…

使用OkHttp上传本地图片及参数

下面以一个例子来讲解在项目中如何使用OKHttp来对本地图片做个最简单的上传功能&#xff0c;基本上无封装&#xff0c;只需要简单调用便可&#xff08;对于OKHttp的引入不再单独做介绍&#xff09;。 1&#xff1a;构建上传图片附带的参数&#xff08;params&#xff09; Map…

2.vue学习笔记(目录结构+模板语法+属性绑定)

1.目录结构 1.vscode ——VSCode工具的配置文件夹 2.node_modules ——Vue项目的运行依赖文件夹 3.public ——资源文件夹&#xff08;浏览器图标&#xff09; 4.src ——源码文件夹 5..gitgnore ——git忽略文件 6.index.html ——如果html文件 7.package.json —…

基于SpringBoot+Vue学生成绩管理系统前后端分离(源码+数据库)

一、项目简介 本项目是一套基于SpringBootVue学生成绩管理系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&#xff0c;确…

ElasticSearch中的分析器是什么?

在Elasticsearch中&#xff0c;分析器&#xff08;Analyzer&#xff09;是一个用于文本分析的重要组件。它定义了如何将文本分解成单词和子词&#xff0c;这对于索引和搜索是非常重要的。 在Elasticsearch中&#xff0c;分析器定义了如何将文本转换为可以被索引和搜索的形式。…

虚幻学习笔记10—C++函数与蓝图的通信

一、前言 除了上一章C变量与蓝图通信讲的变量能与蓝图通信外&#xff0c;还有函数和枚举也可以和蓝图通信。函数的关键字为”UFUNCTION“、枚举的关键字为”UENUM“。 二、实现 2.1、BlueprintCallable蓝图中调用 该函数时带执行的&#xff0c;带入如下。编译成功后在蓝图中输…

macOS 获取文件夹大小

macOS 获取文件夹大小 获取文件夹大小的扩展如下&#xff1a; extension URL {var fileSize: Int? { // in bytesdo {let val try self.resourceValues(forKeys: [.totalFileAllocatedSizeKey, .fileAllocatedSizeKey])return val.totalFileAllocatedSize ?? val.fileAll…

来自Sui的温馨建议:保护您的Web3私钥

当您安装一个钱包并创建Sui账户时&#xff0c;钱包包含一个公钥和一个私钥。保护好私钥的安全非常重要&#xff0c;从而可以保护您的Sui资产&#xff0c;包括钱包中的任何tokens。 公钥加密技术是几十年前开发的&#xff0c;是当今互联网上大多数安全交易的基础&#xff0c;包…

Navicat Premium 16 for Mac/Windows:高效的数据库开发工具

Navicat Premium 16是一款功能强大的数据库开发工具&#xff0c;为开发人员提供了全面的工具和功能&#xff0c;帮助他们更高效地进行数据库开发和管理。不论是初学者还是专业开发人员&#xff0c;Navicat Premium 16都能满足他们的需求&#xff0c;并提供直观、易用的界面。 …

【深度学习】AlexNet网络实现猫狗分类

【深度学习】AlexNet网络实现猫狗分类 AlexNet简介 AlexNet是一种卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;模型&#xff0c;它在2012年的ImageNet图像分类挑战赛中取得了重大突破&#xff0c;引发了深度学习在计算机视觉领域的热潮…

为“异常”努力是值得的

异常是OO语言处理错误的方式,在C中&#xff0c;鼓励使用异常。侯捷再书中谈起异常&#xff0c;“十年前撰写“未将异常考虑在内的”函数是为一种美好实践&#xff0c;而今我们致力于写出“异常安全码”。”可见异常安全的重要。 说起异常安全&#xff0c;首先就要是异常的出现…

Leetcode—213.打家劫舍II【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—213.打家劫舍II 算法思路 实现代码 class Solution { public:// 左闭右开int rob1(vector<int>& nums, int start, int end) {int n nums.size();int f0 0, f1 0, new_f 0;for(int i start; i < end…

pytorch学习入门之 Variable(变量)

Variable(变量) autograd.Variable 是包的核心类. 它包装了张量, 并且支持几乎所有的操作. 一旦你完成了你的计算, 你就可以调用 .backward() 方法, 然后所有的梯度计算会自动进行. 你还可以通过 .data 属性来访问原始的张量, 而关于该 variable(变量)的梯度会被累计到 .…

初识 OpenCV

初识 OpenCV 简介 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个涵盖了数百种计算机视觉算法的开源算法库。 OpenCV 具有模块化结构&#xff0c;这意味着该软件包包含多个共享或静态库。其中包含以下模块&#xff1a; Core functionality (core…

机器学习硬件十年:性能变迁与趋势

本文分析了机器学习硬件性能的最新趋势&#xff0c;重点关注不同GPU和加速器的计算性能、内存、互连带宽、性价比和能效等指标。这篇分析旨在提供关于ML硬件能力及其瓶颈的全面视图。本文作者来自调研机构Epoch&#xff0c;致力于研究AI发展轨迹与治理的关键问题和趋势。 &…

【送书活动四期】被GitHub 要求强制开启 2FA 双重身份验证,我该怎么办?

记得是因为fork了OpenZeppelin/openzeppelin-contracts的项目&#xff0c;之后就被GitHub 要求强制开启 2FA 双重身份验证了&#xff0c;一拖再拖&#xff0c;再过几天帐户操作将受到限制了&#xff0c;只能去搞一下了 目录 2FA是什么为什么要开启 2FA 验证GitHub 欲在整个平台…

消息队列 - RabbitMQ

消息队列 - RabbitMQ 1. 初识 MQ1.1 同步调用1.2 异步调用1.3.技术选型 2. RabbitMQ2.1 安装2.2 收发信息2.2.1 交换机(Exchange)2.2.2 队列2.2.3 绑定关系2.2.4 发送消息 2.3 数据隔离 1. 初识 MQ 微服务一旦拆分&#xff0c;必然涉及到服务之间的相互调用&#xff0c;之前讲…

MySQL六 | 存储引擎

目录 存储引擎 存储引擎特点 存储引擎选择 Innodb与MyISAM区别 存储引擎 默认存储引擎:InnoDB show engines;#展示当前数据库支持的存储引擎 存储引擎特点 特点InnoDBMyISAMMemory存储限制64TB有有事务安全支持--锁机制行锁表锁表锁Btree锁支持支持 支持 Hash索引--支…

编译 Android gradle-4.6-all.zip 报错问题记录

编译 Android gradle-4.6-all.zip 报错问题记录 方法一&#xff1a;替换资源&#xff1a;方法二&#xff1a;修改源方法三&#xff1a;修改版本 编译时候无法下载 gradle-4.6-all Downloading https://services.gradle.org/distributions/gradle-4.6-all.zip 方法一&#xf…