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

相关文章

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

Python结合requests和Cheerio处理网页内容的操作步骤

《Python结合requests和Cheerio处理网页内容的操作步骤》Python因其简洁明了的语法和强大的库支持,成为了编写爬虫程序的首选语言之一,requests库是Python中用于发送HT... 目录一、前言二、环境搭建三、requests库的基本使用四、Cheerio库的基本使用五、结合req

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

使用Python处理CSV和Excel文件的操作方法

《使用Python处理CSV和Excel文件的操作方法》在数据分析、自动化和日常开发中,CSV和Excel文件是非常常见的数据存储格式,ython提供了强大的工具来读取、编辑和保存这两种文件,满足从基... 目录1. CSV 文件概述和处理方法1.1 CSV 文件格式的基本介绍1.2 使用 python 内

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模