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

一:对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;
	}
}

 

时间: 2024-07-28 16:18:27

Android Http请求框架二:xUtils 框架网络请求的相关文章

JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例,我们暂时不讲了,我们直接来重点吧,关于JAVA的网络请求是怎么实现的?当然是HTTP协议,但是不可否认,他的概念和思想都是我们必须去涉及的,包括后面的tcp和socket等,好吧,我们开车吧! 一.JAVA网络请求概述 关于JAVA的网络请求,我们大致的可以分为以下几个分类 网络模式 OSI TCP

网络请求框架 Retrofit 2 使用入门

本文讲的是网络请求框架 Retrofit 2 使用入门, 你将要创造什么 Retrofit 是什么? Retrofit 是一个用于 Android 和 Java 平台的类型安全的网络请求框架.Retrofit 通过将 API 抽象成 Java 接口而让我们连接到 REST web 服务变得很轻松.在这个教程里,我会向你介绍如何使用这个 Android 上最受欢迎和经常推荐的网络请求库之一. 这个强大的库可以很简单的把返回的 JSON 或者 XML 数据解析成简单 Java 对象(POJO).GE

Android 中Volley二次封装并实现网络请求缓存

Android 中Volley二次封装并实现网络请求缓存 Android目前很多同学使用Volley请求网络数据,但是Volley没有对请求过得数据进行缓存,因此需要我们自己手动缓存. 一下就是我的一种思路,仅供参考 具体使用方法为: HashMap<String,String> params = new HashMap<>(); params.put("id", "1"); params.put("user", &quo

iOS - ASIHTTPRequest 网络请求

前言 使用 iOS SDK 中的 HTTP 网络请求 API,相当的复杂,调用很繁琐,ASIHTTPRequest 就是一个对 CFNetwork API 进行了封装,并且使用起来非常简单的一套 API,外号 "HTTP终结者",用 Objective-C 编写,运行效率很高,可以很好的应用在 Mac OS X 系统和 iOS 平台的应用程序中,ASIHTTPRequest 适用于基本的 HTTP 请求,和基于 REST 的服务之间的交互.可惜作者早已停止更新,有一些潜在的 BUG 无

AFN2.0 如何停止当前的网络请求

问题描述 AFN2.0 如何停止当前的网络请求 在当前视图发出网络请求,当pop出这个视图时 如何停止再这个视图中发出的网络请求 解决方案 [[httpClient operationQueue] cancelAllOperations]; 不要创建新AFHTTPClient实例. 尝试"[self cancelAllHTTPOperationsWithMethod:@"POST" path:@"product/like"]; 解决方案二: 可以参考以下链

Android开发中使用Volley库发送HTTP请求的实例教程_Android

Android Volley 是Google开发的一个网络lib,可以让你更加简单并且快速的访问网络数据.Volley库的网络请求都是异步的,你不必担心异步处理问题. Volley的优点: 请求队列和请求优先级 请求Cache和内存管理 扩展性性强 可以取消请求 下载和编译volley.jar需要安装git,ant,android sdk clone代码: git clone https://android.googlesource.com/platform/frameworks/volley

Android开发中使用Volley库发送HTTP请求的实例教程

Android Volley 是Google开发的一个网络lib,可以让你更加简单并且快速的访问网络数据.Volley库的网络请求都是异步的,你不必担心异步处理问题. Volley的优点: 请求队列和请求优先级 请求Cache和内存管理 扩展性性强 可以取消请求 下载和编译volley.jar 需要安装git,ant,android sdk clone代码: git clone https://android.googlesource.com/platform/frameworks/volley

网络请求的基本知识《极客学院 --AFNetworking 2.x 网络解析详解--1》学习笔记

网络请求的基本知识 我们网络请求用的是HTTP请求 Http请求格式:请求的方法,请求头,请求正文 Http请求的Request fields:请求的头部,以及被请求头部的一些设置 Http请求的Response fields:请求的回复头,通过回复头可以了解服务器给我们的一些状态信息. 项目源码:链接: http://pan.baidu.com/s/1i37yGzN 密码: kw6s 获取这个源码后,解压后直接拖拽进新建的Single View工程: 然后在ViewController.m文件

android 线程池配合网络请求框架

问题描述 android 线程池配合网络请求框架 android一些比较常用的网络请求框架如Xutils,volley,内部有线程池吗?如果没有,如何配合自己编写的线程池进行网络请求? 解决方案 Volley是有的,参考:http://www.zhihu.com/question/24695486