XUtils开源项目---HttpUtils网络处理

2024-08-31 23:38

本文主要是介绍XUtils开源项目---HttpUtils网络处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近搜了XUtils进行学习,该开源库是目前git上比较活跃 功能比较完善的一个框架,是基于afinal开发的,比afinal稳定性提高了不少.

上篇博客记录的是  XUtils开源项目---BitmapUtils图片处理

这篇博客记录的是网络请求操作,源码下载地址   XUtils开源项目---HttpUtils网络处理

  • HttpUtils模块:

    • 支持同步,异步方式的请求;
    • 支持大文件上传,上传大文件不会oom;
    • 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;
    • 下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;
    • 返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。

主页面布局--布局有3个按钮,分别是get请求,post请求,下载操作

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/download_btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下载操作" /><Buttonandroid:id="@+id/get"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="get" /><Buttonandroid:id="@+id/post"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="post" /><TextViewandroid:id="@+id/result_txt"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>

MainActivity主布局代码--注释有

package com.example.httputilsdemo;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;public class MainActivity extends Activity implements OnClickListener {private Button download_btn;private Button post;private Button get;private TextView resultText;private HttpUtils http;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);download_btn = (Button) findViewById(R.id.download_btn);get = (Button) findViewById(R.id.get);post = (Button) findViewById(R.id.post);resultText = (TextView) findViewById(R.id.result_txt);http = new HttpUtils();post.setOnClickListener(this);get.setOnClickListener(this);download_btn.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.get:
//			http.send(method, url, callBack);//设置当前请求的缓存时间http.configCurrentHttpCacheExpiry(1000 * 10);http.send(HttpMethod.GET, "http://www.baidu.com", null,new RequestCallBack<String>() {@Overridepublic void onStart() {resultText.setText("conn...");}@Overridepublic void onLoading(long total, long current,boolean isUploading) {resultText.setText(current + "/" + total);}@Overridepublic void onSuccess(ResponseInfo<String> responseInfo) {resultText.setText("response:"+ responseInfo.result);}@Overridepublic void onFailure(com.lidroid.xutils.exception.HttpException arg0,String msg) {resultText.setText(msg);}});break;case R.id.post:RequestParams params = new RequestParams();params.addQueryStringParameter("method", "mkdir");params.addQueryStringParameter("access_token","3.1042851f652496c9362b1cd77d4f849b.2592000.1377530363.3590808424-248414");params.addBodyParameter("path", "/apps/测试应用/test文件夹");//			http.send(method, url, params, callBack)http.send(HttpMethod.POST,"http://www.appchina.com/app/com.lightcone.textemoticons",params, new RequestCallBack<String>() {@Overridepublic void onStart() {resultText.setText("conn...");}@Overridepublic void onLoading(long total, long current,boolean isUploading) {resultText.setText(current + "/" + total);}@Overridepublic void onSuccess(ResponseInfo<String> responseInfo) {resultText.setText("upload response:"+ responseInfo.result);}@Overridepublic void onFailure(com.lidroid.xutils.exception.HttpException arg0,String msg) {resultText.setText(msg);}});break;case R.id.download_btn:// 设置请求参数的编码// RequestParams params = new RequestParams("GBK");RequestParams paramss = new RequestParams(); // 默认编码UTF-8paramss.addQueryStringParameter("method", "mkdir");paramss.addQueryStringParameter("access_token","3.1042851f652496c9362b1cd77d4f849b.2592000.1377530363.3590808424-248414");paramss.addBodyParameter("path", "/apps/测试应用/test文件夹");// 用于非multipart表单的单文件上传// params.setBodyEntity(new FileUploadEntity(new// File("/sdcard/test.zip"), "binary/octet-stream"));// 用于非multipart表单的流上传// params.setBodyEntity(new InputStreamUploadEntity(stream// ,length));// 设置返回文本的编码, 默认编码UTF-8// http.configResponseTextCharset("GBK");http.send(HttpMethod.POST,"http://www.appchina.com/app/com.lightcone.textemoticons",paramss, new RequestCallBack<String>() {@Overridepublic void onStart() {resultText.setText("conn...");}@Overridepublic void onLoading(long total, long current,boolean isUploading) {if (isUploading) {resultText.setText("upload: " + current + "/"+ total);} else {resultText.setText("reply: " + current + "/"+ total);}}@Overridepublic void onFailure(com.lidroid.xutils.exception.HttpException arg0,String msg) {resultText.setText(msg);}@Overridepublic void onSuccess(ResponseInfo<String> responseInfo) {resultText.setText("reply: " + responseInfo.result);}});break;default:break;}}}


这篇关于XUtils开源项目---HttpUtils网络处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125326

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提