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

相关文章

Spring Boot Controller处理HTTP请求体的方法

《SpringBootController处理HTTP请求体的方法》SpringBoot提供了强大的机制来处理不同Content-Type​的HTTP请求体,这主要依赖于HttpMessageCo... 目录一、核心机制:HttpMessageConverter​二、按Content-Type​处理详解1.

解决Maven项目报错:failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题

《解决Maven项目报错:failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题》这篇文章主要介... 目录Maven项目报错:failed to execute goal org.apache.maven.pl

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模