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; } }

 

相关文章
|
1月前
|
域名解析 存储 安全
HTTP【网络】
HTTP协议格式、HTTP的方法 、HTTP的状态码、HTTP常见的Header
240 6
HTTP【网络】
|
8天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
38 3
|
8天前
|
安全 API 网络安全
使用OkHttp进行HTTPS请求的Kotlin实现
使用OkHttp进行HTTPS请求的Kotlin实现
|
19天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
46 13
|
19天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
26天前
|
网络协议 Shell 网络安全
解决两个 Android 模拟器之间无法网络通信的问题
让同一个 PC 上运行的两个 Android 模拟器之间能相互通信,出(qiong)差(ren)的智慧。
23 3
|
2月前
|
数据采集 JSON API
🎓Python网络请求新手指南:requests库带你轻松玩转HTTP协议
本文介绍Python网络编程中不可或缺的HTTP协议基础,并以requests库为例,详细讲解如何执行GET与POST请求、处理响应及自定义请求头等操作。通过简洁易懂的代码示例,帮助初学者快速掌握网络爬虫与API开发所需的关键技能。无论是安装配置还是会话管理,requests库均提供了强大而直观的接口,助力读者轻松应对各类网络编程任务。
116 3
|
2月前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
53 2
|
1月前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
17 0
|
1月前
|
安全 网络安全 数据安全/隐私保护
HTTPS 请求中的证书验证详解(Python版)
HTTPS 请求中的证书验证详解(Python版)
111 0
下一篇
无影云桌面