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

相关文章

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文