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

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.