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.工具类下载






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值