Android Http请求框架二:xUtils 框架网络请求

简介: 一:对Http不了解的请看 Android Http请求框架一:Get 和 Post 请求   二、正文 1、xUtils 下载地址     github 下载地址  : https://github.
一:对Http不了解的请看

Android Http请求框架一:Get 和 Post 请求

 

二、正文

1、xUtils 下载地址

    github 下载地址  : https://github.com/wyouflf/xUtils

 

2、关于网络请求的方法

package com.jike.shanglv.NetAndJson;

import java.io.File;

import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.ResponseStream;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest;
import com.lidroid.xutils.util.LogUtils;

public class HttpUtil {

	String result = "" ;

	/**
	 * Get请求  异步的
	 * @param url  服务器地址
	 * @param userkey 
	 * @param str
	 * @param sign 签名
	 * @return
	 */
	public String xutilsGet( String url , String userkey , String str , String sign  ){
		RequestParams params = new RequestParams();
		params.addQueryStringParameter("userkey", userkey );
		params.addQueryStringParameter("str", str );
		params.addQueryStringParameter("sign", sign );
		HttpUtils http = new HttpUtils();
		http.configCurrentHttpCacheExpiry(1000 * 10); //设置超时时间   10s
		http.send(HttpRequest.HttpMethod.GET,
				url ,
				new RequestCallBack<String>(){
			@Override
			public void onLoading(long total, long current, boolean isUploading) {

			}

			@Override
			public void onSuccess(ResponseInfo<String> responseInfo) {
				result = responseInfo.result.toString() ;
			}

			@Override
			public void onStart() {
			}

			@Override
			public void onFailure(HttpException error, String msg) {
			}
		});

		return result ;
	}

	/**
	 * Post请求 异步的
	 * @param url
	 * @param userkey
	 * @param str
	 * @param sign
	 * @return
	 */
	public String xutilsPost( String url , String userkey , String str , String sign ){
		RequestParams params = new RequestParams();
		params.addQueryStringParameter("userkey", userkey );
		params.addQueryStringParameter("str", str );
		params.addQueryStringParameter("sign", sign );

		// 只包含字符串参数时默认使用BodyParamsEntity,
		// 类似于UrlEncodedFormEntity("application/x-www-form-urlencoded")。
		//params.addBodyParameter("name", "value");

		// 加入文件参数后默认使用MultipartEntity("multipart/form-data"),
		// 如需"multipart/related",xUtils中提供的MultipartEntity支持设置subType为"related"。
		// 使用params.setBodyEntity(httpEntity)可设置更多类型的HttpEntity(如:
		// MultipartEntity,BodyParamsEntity,FileUploadEntity,InputStreamUploadEntity,StringEntity)。
		// 例如发送json参数:params.setBodyEntity(new StringEntity(jsonStr,charset));

		HttpUtils http = new HttpUtils();
		http.configCurrentHttpCacheExpiry(1000 * 10); //设置超时时间   10s  
		http.send(HttpRequest.HttpMethod.POST ,
				url ,
				params,
				new RequestCallBack<String>() {

			@Override
			public void onStart() {
			}

			@Override
			public void onLoading(long total, long current, boolean isUploading) {
			}

			@Override
			public void onSuccess(ResponseInfo<String> responseInfo) {
				result = responseInfo.result.toString() ;
			}

			@Override
			public void onFailure(HttpException error, String msg) {

			}
		});

		return result ;
	}

	/**
	 * 带上传文件的 Post请求   异步的
	 * @param url
	 * @param userkey
	 * @param str
	 * @param sign
	 * @param picString  文件的地址
	 * @return
	 */
	public String xutilsFilePost( String url , String userkey , String str , String sign , String picString ){
		RequestParams params = new RequestParams();
		params.addQueryStringParameter("userkey", userkey );
		params.addQueryStringParameter("str", str );
		params.addQueryStringParameter("sign", sign );

		// 只包含字符串参数时默认使用BodyParamsEntity,
		// 类似于UrlEncodedFormEntity("application/x-www-form-urlencoded")。
		//params.addBodyParameter("name", "value");

		// 加入文件参数后默认使用MultipartEntity("multipart/form-data"),
		// 如需"multipart/related",xUtils中提供的MultipartEntity支持设置subType为"related"。
		// 使用params.setBodyEntity(httpEntity)可设置更多类型的HttpEntity(如:
		// MultipartEntity,BodyParamsEntity,FileUploadEntity,InputStreamUploadEntity,StringEntity)。
		// 例如发送json参数:params.setBodyEntity(new StringEntity(jsonStr,charset));
		params.addBodyParameter("picture", new File( picString )) ;

		com.lidroid.xutils.HttpUtils http = new com.lidroid.xutils.HttpUtils();
		http.send(HttpRequest.HttpMethod.POST ,
				url ,
				params,
				new RequestCallBack<String>() {

			@Override
			public void onStart() {
			}

			@Override
			public void onLoading(long total, long current, boolean isUploading) {
			}

			@Override
			public void onSuccess(ResponseInfo<String> responseInfo) {
				result = responseInfo.result.toString() ;
			}

			@Override
			public void onFailure(HttpException error, String msg) {
			}
		});

		return result ;
	}

	//-------------------以上的代码 是 异步请求的, 以下的代码是同步请求的-------------------------//
/** * Get同步请求 必须在异步块儿中执行 * @param url * @param userkey * @param str * @param sign * @return */ private String xutilsGetSync(String url , String userkey , String str , String sign ) { RequestParams params = new RequestParams(); params.addQueryStringParameter("userkey", userkey ); params.addQueryStringParameter("str", str ); params.addQueryStringParameter("sign", sign ); HttpUtils http = new HttpUtils() ; http.configCurrentHttpCacheExpiry(1000 * 10); //设置超时时间 try { ResponseStream responseStream = http.sendSync(HttpRequest.HttpMethod.GET, url , params ) ; //int statusCode = responseStream.getStatusCode(); //Header[] headers = responseStream.getBaseResponse().getAllHeaders(); return responseStream.readString(); } catch (Exception e) { LogUtils.e(e.getMessage(), e); } return null; } /** * Post同步请求 必须在异步块儿中执行 * @param url * @param userkey * @param str * @param sign * @return */ private String xutilsPostSync(String url , String userkey , String str , String sign ) { RequestParams params = new RequestParams(); params.addQueryStringParameter("userkey", userkey ); params.addQueryStringParameter("str", str ); params.addQueryStringParameter("sign", sign ); HttpUtils http = new HttpUtils() ; http.configCurrentHttpCacheExpiry(1000 * 10); //设置超时时间 try { ResponseStream responseStream = http.sendSync(HttpRequest.HttpMethod.POST , url , params ) ; //int statusCode = responseStream.getStatusCode(); //Header[] headers = responseStream.getBaseResponse().getAllHeaders(); return responseStream.readString(); } catch (Exception e) { LogUtils.e(e.getMessage(), e); } return null; } }

 

相关文章
|
2月前
|
存储 网络协议 算法
从HPACK到多路复用,揭秘HTTP/2如何终结网络拥堵
HTTP/2通过HPACK压缩头部冗余信息,提升传输效率;并利用多路复用技术,在单个TCP连接上并行处理多个请求,避免队头阻塞,显著提升性能。同时支持服务器推送和流优先级设置,优化资源加载体验。
155 7
|
5月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
310 61
|
3月前
|
XML JSON JavaScript
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
108 0
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
|
5月前
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
6月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
181 18
|
6月前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
580 20
|
7月前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
238 22
|
7月前
|
网络安全
网络问题解析:如何解决CondaHTTPError HTTP 000 CONNECTION FAILED错误。
以上就是斯诺普为你准备的解决Conda出现HTTP连接错误的手术室。希望这辆小车可以顺利驶出棘手的泥潭,再次在自由的大路上疾驰。一切的尝试和努力,只为更好的探索与开发。
268 17
|
8月前
|
存储 编解码 开发工具
Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现
本文详细探讨了在Android平台上实现HTTP-FLV播放器的过程。首先介绍了FLV格式的基础,包括文件头和标签结构。接着分析了HTTP-FLV传输原理,通过分块传输实现流畅播放。然后重点讲解了播放器的实现步骤,涵盖网络请求、数据解析、音视频解码与渲染,以及播放控制功能的设计。文章还讨论了性能优化和网络异常处理的方法,并总结了HTTP-FLV播放器的技术价值,尤其是在特定场景下的应用意义。
347 11
|
10月前
|
前端开发 小程序 Java
uniapp-网络数据请求全教程
这篇文档介绍了如何在uni-app项目中使用第三方包发起网络请求
698 3

热门文章

最新文章