Android-封装post和get 网络请求

1.背景

在开发android 的时候,网络请求时必不可少的,在此,封装成一个类,方便调用;

2.注意

在这里实现了 HttpUrlConnection (不是HttpsUrlConnection)的get请求和 HttpClient 的 Get和 Post请求!

这里封装的仅仅是数据的操作,不包括 图片的请求和上传!

3.HttpUrlConnection 实现

这个请求成功后,需要使用 IO流来读取!

public static String getData() throws Exception{

		try {
			//HttpPath.GetGamesPath() : 网络请求路径
			URL url=new URL(HttpPath.GetGamesPath());
			HttpURLConnection conn=(HttpURLConnection) url.openConnection();
			conn.setConnectTimeout(5000);
			conn.setRequestMethod("GET");

			if(conn.getResponseCode()==200){
			   InputStream ips=conn.getInputStream();
			   byte[] data=read(ips);
			   String str=new String(data);
			   System.out.println(str);
			   return str;
			}else{
			   return "网络错误 :conn.getResponseCode() ="+conn.getResponseCode();
			}

		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			return "HttpService.getGamesData()发生异常! "+e.getMessage();
		}

	}

	 /*
     * 读取流中的数据
     * */
	public static byte[] read(InputStream inStream) throws Exception {
		ByteArrayOutputStream outStream=new ByteArrayOutputStream();
		byte[] buffer=new byte[1024];
		int len=0;
		while((len=inStream.read(buffer))!=-1){
			outStream.write(buffer,0,len);
		}
		inStream.close();
		return outStream.toByteArray();
	}

4.Httpclient , Httppost , EneityUtils 实现 post 请求操作

这里注意的是传参数的时候需要的是
List<BasicNameValuePair>  , 参数格式化 需要的是 UrlEncodeFormEntity 方法!

/**
	 * httpclient post提交数据
	 * @param parameters
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public static String toPostdata(List<BasicNameValuePair> parameters) throws ClientProtocolException, IOException{

		String str="获取失败";

		//初始化
		HttpClient  client=new DefaultHttpClient();
		//HttpPath.GetGamesPath() : 网络请求路径
		HttpPost httpPost=new HttpPost(HttpPath.GetGamesPath());
		//设置参数
		UrlEncodedFormEntity params=new UrlEncodedFormEntity(parameters,"UTF-8");
        httpPost.setEntity(params);
        //执行请求
        HttpResponse response= client.execute(httpPost);
        //取得返回值
		if(response.getStatusLine().getStatusCode()==200){
			//请求成功
			HttpEntity entity=response.getEntity();
			str=EntityUtils.toString(entity, "UTF-8");
		}

		return str;
	}
	

5.Httpclient , Httpget , EneityUtils 实现 get请求操作

/**
	 * httpclient get 获得数据
	 * @return
	 */
	public static String toGetData(){
		String str="获取数据失败";

		HttpClient client=new DefaultHttpClient();
		////HttpPath.GetGamesPath() : 网络请求路径
		HttpGet get=new HttpGet(HttpPath.GetGamesPath());
	 	try {

	 		HttpResponse httpResponse=client.execute(get);

		    if(httpResponse.getStatusLine().getStatusCode()==200){
		    	str=EntityUtils.toString(httpResponse.getEntity(),"UTF-8");
		    }

		    return str;

		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			return "toGetData 异常:"+e.getMessage();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			return "toGetData 异常:"+e.getMessage();
		}
	}

6.对比

相比之下 HttpClient 比 HttpUrlConnection 更方便些,但是 还是看习惯而言!

7.工具类下载

http://download.csdn.net/detail/lablenet/9005725

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 17:25:02

Android-封装post和get 网络请求的相关文章

Android中的几种网络请求方式详解

http://blog.csdn.net/zuolongsnail/article/details/6373051 Android应用中使用AsyncHttpClient来异步网络数据 http://blog.csdn.net/sdvch/article/details/13615605 Android中的几种网络请求方式详解,布布扣,bubuko.com

Xamarin.Android之封装个简单的网络请求类

一.前言 回忆到上篇 <Xamarin.Android再体验之简单的登录Demo> 做登录时,用的是GET的请求,还用的是同步, 于是现在将其简单的改写,做了个简单的封装,包含基于HttpClient和HttpWebRequest两种方式的封装. 由于对这一块还不是很熟悉,所以可能不是很严谨. 二.先上封装好的代码 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Json

Android之封装好的异步网络请求框架

1.简介 Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnection,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用这个MyHttpUtils库可以大大的简化操作,它是基于HttpURLConnection,所有的请求都是独立在UI主线程之外,没有通过CommCallback回调方法处理请求结果, 没有了子线程.没有了handle,链式的变成使得代码更加清晰 . 2.特性 支持get.post请求,文件下载,上传

Android学习笔记:Andorid网络请求框架Volley的使用(上)

Volley框架是Google I/O 2013大会上发布的.Volley是Google针对Android平台上的网络通信库而诞生,该框架能使网络通信更快,更简单,更健壮.Volley的特点有: Ⅰ:通信更简单更快捷 ll:Get,Post网络请求及网络图像进行高效异步处理 III:可以对多个网络请求进行优先级排序以级多级别取消操作 IV:网络请求缓存及与Activity生命周期进行联动,在Activity销毁的时候可以对网络请求进行取消操作,防止内存泄露. Volley的使用很简单: 1,下载

Android 9.0/P http 网络请求的问题

Google表示,为保证用户数据和设备的安全,针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android Nougat 和 Oreo 则不受影响. 因此在Android P 使用HttpUrlConnectio

Swift2.0:使用协议(Protocols)和闭包(Closures)封装一个简单的网络请求类

一,使用闭包封装 一, 验证 二,使用代理

Android 各大网络请求库的比较及实战,android请求库实战

自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,之前使用HttpClient.

Android进阶笔记01:Android 网络请求库的比较及实战(一)

在实际开发中,有的时候需要频繁的网络请求,而网络请求的方式很多,最常见的也就那么几个.本篇文章对常见的网络请求库进行一个总结. 一.使用HttpUrlConnection: 1. HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android2.3以后使用HttpUrlConnection,之前使用HttpCl

Android 网络请求的那些事

自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,之前使用HttpClient.

Android 几种网络请求的区别与联系

HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,之前使用HttpClient. 在Android 2.2版本之前,HttpClient拥有较少的bug,因此使用它是最好的选择.而在Android 2.3版本及以后,HttpURLConnecti